Oracle動態SQL返回值傳到變數的寫法

2022-07-27 06:24:09 字數 1270 閱讀 6549

網上找到很多寫法,有些對有些不對,自己摸索,找到一些可以通過測試的寫法,總結如下(均以hr schema舉例)。

1. 普通的select返回

1

declare

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. 動態游標舉例 

1

open 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...