oracle 繫結變數的用法

2021-09-01 21:45:46 字數 1684 閱讀 6682

1.前言。

oracle10g後,使用繫結變數更能提高效率。

以下**的文章。

讓oracle自己繫結變數

set serverout on;

set timing on;

declare

l_sql varchar();

l_count number;

l_param varchar();

l_param varchar();

begin

l_param:=a;

l_param:=b;

select count(*) into l_count from table where col_=l_param and col_=l_param;

dbms_outputput_line(l_count);

end;

/在上面的情況oracle會自己繫結變數即如果引數儲存在乙個陣列中select語句放在乙個迴圈中

select 語句只會編譯一次

像這樣for i in

loop

select count(*) into l_count from table where col_=l_param and col_=l_param and col_=i;

dbms_outputput_line(l_count);

end loop

不繫結變數

set serverout on;

set timing on;

declare

l_sql varchar();

l_count number;

l_param varchar();

l_param varchar();

begin

l_param:=a;

l_param:=b;

l_sql:=select count(*) into :x from table where col_=||l_param|| and col_=||l_param;

execute immediate l_sql into l_count;

dbms_outputput_line(l_count);

end;

/動態繫結變數

set serverout on;

set timing on;

declare

l_sql varchar();

l_count number;

l_param varchar();

l_param varchar();

begin

l_param:=a;

l_param:=b;

l_sql:=select count(*) into :x from table where col_=:y and col_=:z ;

execute immediate l_sql into l_count using l_paraml_param;

dbms_outputput_line(l_count);

end;

/:x:y:z相當於佔位符即

用:p:p:p是一樣的

用:x:x:x也是一樣的

需要的繫結變數按順序排在執行語句後面就可以了into的除外

不過還是用pp好些至少可以看出繫結了多少個變數

Oracle 繫結變數用法

在oracle 中,對於乙個sql語句,存在兩種可選的解析過程,一種是硬解析,一種是軟解析.乙個硬解析需要經解析,制定執行路徑,優化訪問計畫等許多的步驟.硬解釋不僅僅耗費大量的cpu,更重要的是會佔據重要的們閂資源,嚴重影響了系統的併發效率。當乙個sql語句提交後,oracle會首先檢查一下共享緩衝...

oracle變數繫結

一 游標 游標可以理解為sql語句的乙個控制代碼,也叫sql語句的指標,游標指向一條sql語句,oracle會話要執行一條sql時,首先要開啟游標。二 sql解析的過程 硬解析步驟 1.對sql語句進行語法檢查,看是否有語法錯誤 2.通過資料字典,檢查sql語句中涉及的物件和列是否存在 3.檢查sq...

oracle 繫結變數

不太喜歡看到在procedure用 拼接sql的語句 所以貼了個繫結變數的例子,僅供參考 create or replace procedure using test t name nvarchar2 as v id char v char begin execute immediate selec...