子儲存過程呼叫

2021-09-30 15:58:37 字數 3845 閱讀 9645

with return to caller選項指定將來自游標的結果返回給呼叫者,後者可以是另乙個過程或者客戶機應用程式,這是預設選項

with return to client選項指定將來自游標的結果返回給客戶機應用程式,繞過中間的任何過程.

子儲存過程:

create procedure test(

out v_message varchar(500)

)

dynamic result sets 1

language sql

begin

--異常處理

declare sqlcode int;

declare v_errcode int default 0;

declare continue handler for sqlexception

begin

set v_errcode = sqlcode;

end;

set v_message = '子儲存過程';

--使用游標返回結果集

begin

declare v_cur cursor with hold with return to caller for

select * from test;

open v_cur;

end;

return v_errcode;

end@

--呼叫子儲存過程

createprocedurecalltest(

out v_messagevarchar(500) )

dynamic result sets 1

language sql

begin

declaresqlcodeint;

declarev_errcodeintdefault0;

declareresult1 result_set_locatorvarying;

--用來接收子儲存過程的結果集

declarev_namevarchar(500);

--用來接收子儲存過程的輸出引數

declarev_idint;

declarev_cityvarchar(50); --

異常處理

declarecontinue handler

forsqlexception

begin

setv_errcode = sqlcode;

end

--定義臨時表

declareglobaltemporarytabletemp (

idint,

ctiyvarchar(50)

)oncommitpreserverowswith

replace

notlogged;

--呼叫子儲存過程

call test(v_name);

if v_errcode = 0then

setv_message = '呼叫

'||v_name||'成功

';else

setv_message = '呼叫

'||v_name||'失敗

';endif;

--呼叫子過程的結果集

associate resultsetlocators (result1)withproceduretest;

allocate   callc2cursor

forresultsetresult1;

--將子過程結果集插入臨時表

fetchfromcallc2intov_id, v_city;

while sqlcode = 0 do

insertintosession.tempvalues(v_id,v_city);

fetchfromcallc2intov_id, v_city;

endwhile;

--使用游標返回結果集

begin

declarev_curcursorwithholdwithreturn to caller

for

select*fromsession.temp;

open v_cur;

end;

return v_errcode;

end@

Oracle儲存過程呼叫儲存過程

oracle儲存過程呼叫有返回結果集的儲存過程一般用光標的方式,宣告乙個游標,把結果集放到游標裡面,然後迴圈游標 declare newcs sys refcursor cs1 number cs2 number cstype table rowtype table列的個數和newcs返回的個數一樣...

呼叫儲存過程

用乙個命令物件呼叫儲存過程,就是定義儲存過程的名稱,給過程的每個引數新增引數定義,然後執行命令。1.呼叫沒有返回值的儲存過程 呼叫儲存過程的最簡單示例是不給呼叫者返回任何值。下面定義了兩個這樣的儲存過程,乙個用於更新現有的region記錄,另乙個用於刪除指定的region記錄。1 記錄的更新 cre...

儲存過程呼叫

size medium color blue 於 size small 儲存過程 包含三部分 宣告,執行部分,異常。可以有無引數程式和帶引數儲存過程。無參程式語法 1 create or replace procedure noparpro 2 as 3 begin 4 5 exception 6 ...