在pl/sql程式開發中,可以使用dml語句和事務控制語句,但是還有很多語句(比如ddl語句)不能直接在pl/sql中執行。
這些語句可以使用動態的sql來實現。動態sql是指在pl/sql塊編譯sql語句是不確定的。
--動態sql執行ddl語句
drop
procedure procedure5;
create
orreplace
procedure procedure5(
tablename in varchar2,
column1 in varchar2,
datatype1 in varchar2,
column2 in varchar2,
datatype2 in varchar2)as
existscount number:=0;
str_sql varchar2(
500)
;begin
begin
execute immediate 'drop table '
|| tablename;
exception when others then
null
;end
;
str_sql:=
'create table '
|| tablename ||
'('|| column1 ||
' '|| datatype1 ||
','|| column2 ||
' '|| datatype2 ||
')';
execute immediate str_sql;
--執行動態ddl語句
-- execute immediate 'truncate table ***xx'
-- execute immediate 'alter trigger ***xx disable'
exception
when others then raise;
end;
測試如圖:
測試如圖:
Oracle動態SQL語句
在使用odp.net進行oracle程式設計時,有時候sql語句非常複雜,需要採用動態構造查詢語句的情況,有兩種方法可以構造動態的sql語句,並執行返回結果集。1 在資料訪問層構造sql語句 例如下面的語句,將構造完整的sql語句賦值給commandtext,再傳遞到資料庫進行執行,返回結果集。lo...
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語句
oracle 動態sql oracle 動態sql有兩種寫法 用 dbms sql 或 execute immediate,建議使用後者。試驗步驟如下 1.ddl 和 dml sql ddl begin execute immediate drop table temp 1 execute imme...