網上找到很多寫法,有些對有些不對,自己摸索,找到一些可以通過測試的寫法,總結如下(均以hr schema舉例)。
1. 普通的select返回
1declare
2 v_name employees.last_name%
type;
3 v_salary number
;4 p_id employees.employee_id%
type;
5begin
6 p_id :=
102;
7execute immediate '
select last_name,salary from employees where employee_id=:1'8
into v_name, v_salary using p_id; --
動態sql為查詢語句
9 dbms_output.put_line(v_name ||
'的收入為:'||
to_char(v_salary));
10 exception when others then
11 dbms_output.put_line('
找不到相應資料');
12end;
2. 動態游標舉例
1open deputy_cur for2'
select d.owner
3from apr_role_user_deputy d
4where d.apr_code = :1
5and d.user_number = :2'6
using l_rol, l_user;
7loop
8......;
9end loop;
3. 呼叫儲存過程舉例
1 lc_temp :='begin proc_abc(:1, :2, :3, :4, :5); end;';
2execute
immediate lc_temp
3 using out lc, out l_err_msg, in l_xml_str, in l_step_seq, in out l_serial;
這個用法的要點在於:using後面的引數順序要和procedure的一樣,預設引數類別是in,最好in、out都手動加上。
想不起來還有其他什麼用法了,想起來的話再補充吧
參考:
從動態SQL中返回值
declare transactorid int set transactorid 0 print transactorid execsp execute sqln select transactorid 68 n transactoridint transactorid execsp execut...
SQL儲存過程返回值
先靠一下自己。當我做多了oracle時,我就忘了sql的儲存過程可以返回資料集這個事實了。create procedure test t1 int,t2 nvarchar 200 out asset t2 這個是輸出引數 go呼叫 declare out t2 nvarchar 200 exec t...
關於函式傳參及返回值
很多剛學指標的人多會遇到這樣的情況,就是你給乙個函式傳遞乙個指標變數,在這個函式中為這個指標申請空 間,賦值,可是等函式結束後這個指標還是乙個空指標,對其的操作編譯器會報段錯誤或乾脆給你乙個莫名其妙的值,這是乙個隨機數。如 include include int my fun int p int m...