91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle之綁定變量 2

發布時間:2020-06-05 19:51:26 來源:網絡 閱讀:595 作者:xiaofeng520ct 欄目:關系型數據庫

綁定變量(bind variable)我們經常在寫plsql中用到,那我們承接上一節的來看看在plsql中靜態sql和動態sql在綁定變量的區別

declare
    v_value_a varchar2(100);
    v_value_b varchar2(100);
    v_name  varchar2(50);
begin
    v_value_a := 'SMITH';
    select e.ename/*+test*/into v_name from scott.emp e where e.ename = v_value_a;
    v_value_b := 'ALLEN';
    select e.ename/*+test*/into v_name from scott.emp e where e.ename = v_value_b;
end;
/

查詢v$sql

select * from v$sql d where d.SQL_TEXT like '%/*+test*/%';

Oracle之綁定變量 2

這里看到只產生了一條sql_id,oracle會自動把變量v_value_a,v_value_b換成綁定變量:B1.


再來看看動態sql

PLSQL_1:
declare
    v_value_a varchar2(100);
    v_value_b varchar2(100);
    v_name  varchar2(50);
begin
    v_value_a := 'SMITH';
    
    v_value_b := 'ALLEN';

    execute immediate 'select e.ename/*+sql*/ from scott.emp e where e.ename = :xxx' 
    using v_value_a;
    
    execute immediate 'select e.ename/*+sql*/ from scott.emp e where e.ename = :yyy' 
    using v_value_b;
end;
/

查詢v$sql

select * from v$sql d where d.SQL_TEXT like '%/*+sql*/%';

Oracle之綁定變量 2

這里可以看到動態sql就是以執行sql為文本進行解析的,如果兩個sql有不同就是不同的sql語句。


2.獲取綁定變量的值

那我們可以得到綁定的變量的值嗎?通過v$sql_bind_capture就可以查詢到

SQL_1:
select d.NAME, d.POSITION, d.SQL_ID, value_string
  from v$sql_bind_capture d
 where d.SQL_ID in
       (select sql_id from v$sql v where v.SQL_TEXT like '%/*+sql*/%')

Oracle之綁定變量 2

這時我們看到綁定變量的值是上文看到的v_value_a和v_value_b的值。

接著往下走,改變v_value_a的值:

v_value_a := 'CLARK';

執行PLSQL_1,SQL_1

Oracle之綁定變量 2

綁定變量的值并沒有發生變化,這時為什么呢?

  • v$sql_bind_capture這個視圖是一個快照視圖,并不會保存所有執行過的SQL的綁定變量,只會記錄最近一次捕獲到的綁定值,而已每次捕獲都是有間隔時間的。ORACLE為我們提供了一個隱含參數_cursor_bind_capture_interval(默認900s),這個就是控制綁定變量抓取頻率的參數。

  • 如果綁定變量是DATE類型則無法直接查看到的。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广州市| 罗平县| 长垣县| 晋宁县| 青海省| 霍城县| 邹城市| 会昌县| 香格里拉县| 鄂尔多斯市| 鄂托克旗| 兴宁市| 麻阳| 视频| 武强县| 伊金霍洛旗| 高安市| 望江县| 砀山县| 海安县| 安达市| 哈巴河县| 永年县| 两当县| 会东县| 微山县| 平顺县| 达孜县| 全南县| 米林县| 鄢陵县| 西乌珠穆沁旗| 灌云县| 工布江达县| 修武县| 嫩江县| 永善县| 渭南市| 方山县| 闸北区| 长汀县|