Oracle 繫結變數用法

2021-08-30 04:59:15 字數 1554 閱讀 9765

在oracle 中,對於乙個sql語句,存在兩種可選的解析過程, 一種是硬解析,一種是軟解析.

乙個硬解析需要經解析,制定執行路徑,優化訪問計畫等許多的步驟.硬解釋不僅僅耗費大量的cpu,更重要的是會佔據重要的們閂資源,嚴重影響了系統的併發效率。當乙個sql語句提交後,oracle會首先檢查一下共享緩衝池裡有沒有與之完全相同的語句,如果有的話只須執行軟分析即可,否則就得進行硬分析。

而唯一使得oracle 能夠重複利用執行計畫的方法就是採用繫結變數。繫結變數的實質就是用於替代sql語句中的常量的替代變數。繫結變數能夠使得每次提交的sql語句都完全一樣。

下面用個簡單的儲存過程例子演示下變數繫結的用法:

create table student (grade varchar2(5), num number(6), name varchar2(20), age integer); 

insert into student values('101', 100001, 'jack', 20);

insert into student values('102', 100001, 'mike', 21);

insert into student values('101', 100002, 'merry', 19);

insert into student values('102', 100002, 'tony', 20);

procedure test_bind_variable is

v_name varchar2(20);

v_grade number(6);

v_num number(6);

v_age integer;

v_sql varchar2(200);

begin

for cur_name in (select name from student) loop

v_name := cur_name.name;

v_sql := 'select grade, num, age into :n, :y, :z from student where name = :m';

execute immediate v_sql

into v_grade, v_num, v_age

using v_name;

dbms_output.put_line('grade=' || v_grade || ', num=' || v_num ||

', name=' || v_name || ', age=' || v_age);

end loop;

end test_bind_variable;

測試結果為:

grade=101, num=100001, name=jack, age=20

grade=102, num=100001, name=mike, age=21

grade=101, num=100002, name=merry, age=19

grade=102, num=100002, name=tony, age=20

oracle 繫結變數的用法

1.前言。oracle10g後,使用繫結變數更能提高效率。以下 的文章。讓oracle自己繫結變數 set serverout on set timing on declare l sql varchar l count number l param varchar l param varchar ...

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...