oracle PL SQL 中變數繫結用法

2021-04-12 14:12:51 字數 1206 閱讀 4014

從oracle的共享池的設計、和oracle推薦的 pl/sql 寫法中,可以看出,變數繫結對效能有比較大的影響,那麼,如何在pl/sql 中使用變數繫結呢?

首先看看不使用變數繫結的用法:

declare

cursor cur_temp(id number) is

select * from table_a where a=id;

c_temp cur_temp%rowtype;

beign

open cur_temp(1);

loop

fetch cur_temp into c_temp;

exit when cur_temp%notfound;

insert into b values (c_temp.a);

end loop;

close cur_temp;

commit;

end;

上面是沒有使用變數繫結的用法,包括游標和操作語句。

再看下面使用變數繫結的用法:

先要type cursortype is ref cursor;

然後:declare

cur_temp cursortype;

c_temp table_a%rowtype;

begin

open cur_temp for 'select * from table_a where a=:1' using 91;

loop

fetch cur_temp into c_temp;

exit when cur_temp%notfound;

execute immediate 'insert into b values (:1)' using c_temp.a;

end loop;

close cur_temp;

commit;

end;

上面是在pl/sql 塊中的寫法,這個寫法也同樣適用於儲存過程,觸發器,函式,包等可以用pl/sql 的地方。

對於需要用 into 的地方,可以如下使用:

i number(6);

execute immediate 'select count(*) from table_a where a =:1' into i using 89;

執行後,取出的值存放在了變數 i 中。

在pl/sql 中,變數繫結的常見用法基本如上所示,建議全部使用變數繫結。

Oracle PL SQL動態獲取變數

假設有一張員工表fnd employee有如下字段employee id,name,email,phone四個字段,然後我定義四個變數v1,v2,v3,v4 來存這四個字段 例 select from fnd employee into col1,col2,col3,col4 where rownu...

oracle pl sql之游標變數

與游標類似,游標變數也可以處理多行查詢的結果集。但是,游標與游標變數是不同的,就 像常量和變數的關係一樣。游標包括顯式游標和隱式游標,它們都是靜態定義的。當使用者使用它們時,就需要再宣告時定義查詢。而游標變數是動態的,它不與特定 的查詢繫結在一起,而是執行時才確定所使用的查詢。游標變數的定義包括兩個...

oracle plsql中decode 函式用法

在oracle plsql的,decode函式有乙個if then else語句的功能。decode函式的語法是 decode expression search result search result default expression值進行比較。search 是對表達相比的價值。result...