oracle 中的動態 SQL

2021-08-26 19:34:06 字數 1210 閱讀 9569

在 pl/sql 塊中,可以使用 ddl 語句和事物控制語句,但還有很多語句不能直接在 pl/sql 中執行,比如 ddl,這些語句可以使用動態 sql 來執行。

connected to oracle database 11g enterprise edition release 11.2.0.1.0 

connected as scott

動態 sql 的語法格式

execute immediate 動態語句字串

[into 變數列表]

[using 引數列表]

**演示

declare

sql_stmt varchar2(200);

emp_id number(4):=7566;

salary number(7,2);

dept_id number(2):=90;

dept_name varchar2(14):='personnel';

loc varchar2(13):='dalls';

emp_rec emp%rowtype;

begin

--執行無字句的動態 sql

execute immediate 'create table tttt(id number,name varchar2(10))';

--引數名必須以冒號開頭,名字隨便寫,但不能重複

sql_stmt:='insert into dept values(:1,:2,:3)';

execute immediate sql_stmt using dept_id,dept_name,loc;

sql_stmt:='select * from emp where empno = :i';

execute immediate sql_stmt into emp_rec using emp_id;

sql_stmt:='update emp set sal = 2000 where empno=:1 returning sal into :2';

execute immediate sql_stmt using emp_id returning into salary;

execute immediate 'delete from dept where deptno = :n' using dept_id;

end;

Oracle中動態SQL拼接

1.直接用單引號,單引號的使用是就近配對,即就近原則。從第二個單引號開始被視為轉義符 v sql insert into bjtongrentangtemptb select distinct h.sellerid,h.sellercode,h.sellername,h.prodcode,h.pro...

Oracle中動態SQL詳解

一 靜態sql與動態sql oracle編譯pl sql程式塊分為兩種 一種為前期聯編 early binding 即sql語句在程式編譯期間就已經確定,大多數的編譯情況屬於這種型別 另外一種是後期聯編 late binding 即sql語句只有在執行階段才能建立,例如當查詢條件為使用者輸入時,那麼...

Oracle動態sql中的轉義符

單引號雙重角色 字串引用與轉義 在oracle中,單引號有兩個作用,一是字串是由單引號引用,二是轉義,開始學習時動態構成sql時經常不解。單引號的使用是就近配對,即就近原則。而在單引號充當轉義角色時相對不好理解。1 從第二個單引號開始被視為轉義符,如果第二個單引號後面還有單引號 哪怕只有乙個 sql...