ORACLE 動態執行SQL語句

2021-06-19 21:31:14 字數 1910 閱讀 1299

oracle 動態sql

oracle 動態sql有兩種寫法:用 dbms_sql 或 execute immediate,建議使用後者。試驗步驟如下:

1. ddl 和 dml

sql**  

/*** ddl ***/  

begin

execute immediate 'drop table temp_1';  

execute immediate 'create table temp_1(name varchar2(8))';  

end;  

/*** dml ***/  

declare

v_1 varchar2(8);  

v_2 varchar2(10);  

str varchar2(50);  

begin

v_1:='測試人員';  

v_2:='北京';  

str := 'insert into test (name ,address) values (:1, :2)';  

execute immediate str using v_1, v_2;  

commit;  

end;  

2. 返回單條結果

sql**  

declare

str varchar2(500);  

c_1 varchar2(10);  

r_1 test%rowtype;  

begin

c_1:='測試人員';  

str:='select * from test where name=:c where rownum=1';  

execute immediate str into r_1 using c_1;  

dbms_output.put_line(r_1.name||r_1.address);  

end ;  

3. 返回結果集

sql**  

create

orreplace package pkg_test as

/* 定義ref cursor型別  

不加return型別,為弱型別,允許動態sql查詢,  

否則為強型別,無法使用動態sql查詢;  

*/  

type myrctype is ref cursor;  

--函式申明

function get(intid number) return myrctype;  

end pkg_test;  

/  create

orreplace package body pkg_test as

--函式體

function get(intid number) return myrctype is

rc myrctype; --定義ref cursor變數

sqlstr varchar2(500);  

begin

if intid=0 then

--靜態測試,直接用select語句直接返回結果

open rc for

select id,name,***,address,postcode,birthday from

student;  

else

--動態sql賦值,用:w_id來申明該變數從外部獲得

sqlstr := 'select id,name,***,address,postcode,birthday from student  

where id=:w_id';  

open rc for sqlstr using intid;  

end if;  

return rc;  

end get;  

end pkg_test;  

/  

ORACLE 動態執行SQL語句

oracle 動態sql oracle 動態sql有兩種寫法 用 dbms sql 或 execute immediate,建議使用後者。試驗步驟如下 1.ddl 和 dml ddl begin execute immediate drop table temp 1 execute immediat...

ORACLE 動態執行SQL語句

部落格分類 sql oracle cc c oracle 動態sql oracle 動態sql有兩種寫法 用 dbms sql 或 execute immediate,建議使用後者。試驗步驟如下 1.ddl 和 dml sql ddl begin execute immediate drop tab...

Oracle動態SQL語句

在使用odp.net進行oracle程式設計時,有時候sql語句非常複雜,需要採用動態構造查詢語句的情況,有兩種方法可以構造動態的sql語句,並執行返回結果集。1 在資料訪問層構造sql語句 例如下面的語句,將構造完整的sql語句賦值給commandtext,再傳遞到資料庫進行執行,返回結果集。lo...