調用oracle存儲過程返回值
1. oracle裡面怎麼調用有返回值的存儲過程
create or replace procere xs_proc(temp_name in varchar2,
temp_num out number) is
num_1 number;
num_2 number;
begin
select yu_wen, shu_xue
into num_1, num_2
from xuesheng
where xing_ming = temp_name;
--dbms_output.put_line(num_1 + num_2);
temp_num := num_1 + num_2;
end;
單個返回值的oracle存儲過程
2. Oracle獲取存儲過程輸出參數返回值
CREATE OR REPLACE PROCEDURE sap_po_test(id IN NUMBER,
p_message OUT VARCHAR2) AS
mycount number(4) := 0;
BEGIN
SELECT COUNT(*)
INTO mycount
FROM 表
WHERE id = p_id;
IF mycount > 0 THEN
p_message := 'S';
ELSE
p_message := 'E';
END IF;
RETURN;
END;
( ⊙ o ⊙ )啊!
3. oracle怎麼寫一個無參存儲過程去調用一個有參數有返回值的存儲過程
create
procere
proc_a
as
declare
b
int;
c
varchar2(10);
begin
proc_b(b,
c);
dbms_output.put_line
(c);
end
procere
a;
你照我這個寫吧
proc_b(b,
c);
proc_b是你調用的帶返回參數的存儲過程
b是輸入變數,c是輸出變數
4. oracle 怎麼調用存儲過程
ORACLE存儲過程 以oracle自帶例子資料庫的表舉例
1、
create or replace procere p
is
cursor c is
select * from emp2 for update;
begin
for v_emp in c loop
if(v_emp.sal <2000) then
update emp2 set sal =sal+1 where current of c ;
elsif(v_emp.sal>=2000) then
delete from emp2 where current of c;
end if;
end loop;
commit;
end;
創建了存儲過程不代表運行了存儲過程;
運行此存儲過程 :
方式一 exec p;
方式二
begin
p;
end;
2、帶參數的存儲過程
in 相當於程序里的參數,供傳入用,在存儲過程不能改變其值;
out 相當於程序里的返回值,在存儲過程中可以為其賦值傳出;
in out 既可以當參數又可以當返回值用;
不帶上述說明符默認為in類型;
下例中v_a v_b 為in類型
v_c 為out類型
v_d 為in out 類型
create or replace procere p(v_a in number,v_b number,v_c out number,v_d in out number)
is
begin
if(v_a > v_b) then
v_c := v_a;
else
v_c := v_b;
end if;
v_d := v_d+1;
end;
---> 調試時:
可以在命令窗口調試,出錯時 用show errors 顯示出錯信息;
可以在plDv中調試;
---> 運行時:
可以在命令窗口運行:
declare
v_a number:=3;
v_b number:=4;
v_c number;
v_d number:=5;
begin
p(v_a,v_b,v_c,v_d);
dbms_output.put_line(v_c);
dbms_output.put_line(v_d);
end;
可以在plDv中調試;
5. shell如何獲取oracle存儲過程返回值
類似下面的方法:
fcp_login="<user>/<password>"
ret_value=`sqlplus-s$fcp_login<<EOF
setheadingoff
setfeedbackoff
setpages0
settrimspoolon
VARIABLEx_outnumVARCHAR2(30);
EXECUTEimportUserInfoDate1g(:x_outnum);
printx_outnum
exit;
EOF`
6. oracle 中運行存儲過程作為返回值
oracle可以使用out型參數返回值,例如:
--查詢某商品編號是否存在,返回查詢狀態
createorreplaceprocereproc_getGood
(
param_shopIdnumber,--商品編號
param_flagoutnumber--查詢狀態0不存在
)
as
declarev_countnumber(1);
begin
selectcount(*)intov_countfromtb_goodswhereshopid=param_shopid;
ifv_count=0then
param_flag:=0;
else
param_flag:=1;
endif;
end;
7. java調用oracle存儲過程無法獲得正確的返回值,每次都是0
你通過JDBC這種方式調用存儲過程,應該使用 CallableStatement 類, CallableStatement cs=conn.prepareCall(str);
補充一句,避免你在執行有錯,
cs.excuse();這個方法為執行,然後在獲取輸出參數。另外寫輸出參數的類型時,直Types.類型即可,不用帶包。