在oracle 中,對於乙個提交的sql語句,存在兩種可選的解析過程, [color=red]一種叫做硬解析,一種叫做軟解析。[/color]
[color=red]乙個硬解析需要經解析,制定執行路徑,優化訪問計畫等許多的步驟。[/color]硬解析不僅僅耗費大量的cpu,更重要的是會佔據重要的門閂(latch)資源,嚴重的影響系統的規模的擴
大(即限制了系統的並發行),而且引起的問題不能通過增加記憶體條和cpu的數量來解決。之所以這樣是因為門閂是為了順序訪問以及修改一些記憶體區域而設定的,這些記憶體區
域是不能被同時修改。[color=red]當乙個sql語句提交後,oracle會首先檢查一下共享緩衝池(shared pool)裡有沒有與之完全相同的語句,如果有的話只須執行軟分析即可,否則就得進
行硬分析。[/color]
而[color=red]唯一使得oracle能夠重複利用執行計畫的方法就是採用繫結變數。繫結變數的實質就是用於替代sql語句中的常量而替代成變數。繫結變數能夠使得每次提交的sql語句都完全一樣。[/color]
declare
name varchar2(255) ;
begin
name :='lan' ;
delete from t ;
commit ;
for i in 1..100
loop --使用變數來表示 using in 變數1,變數2
execute immediate 'insert into t(age,name) values(:y,:x)' using in i, name ;
end loop ;
end ;
/
oracle 變數使用
在oracle 中,對於乙個提交的sql語句,存在兩種可選的解析過程,color red 一種叫做硬解析,一種叫做軟解析。color color red 乙個硬解析需要經解析,制定執行路徑,優化訪問計畫等許多的步驟。color 硬解析不僅僅耗費大量的cpu,更重要的是會佔據重要的門閂 latch 資...
oracle 變數的使用
oralce定義標量 scalar declare v name varchar 20 定義乙個varchar長度20的變數 declare v number number 5,2 定義乙個number長度5,精度2的變數 declare v no number 5,2 999.99 定義乙個num...
Oracle游標繫結變數使用
3.2 繫結變數 using 只需要解析一次 begin execute immediate update emp set sal sal 2 where empno p empno using p eno commit end 注意 不能使用繫結變數替換實際的資料庫物件名 表,檢視,列等 只能替換...