查詢繫結變數的值
有好長一段時間沒有發表過任何文章,主要是近期工作都沒有做與ORACLE相關的事宜。今天正好有一些時間,記錄一個技巧性的SQL語句。
我們通常在想找一個SQL中包含的繫結變數值時,10046是條件反射的一個操作。不過有的時候,我們希望知道一個已經存在的硬解析到底運用了什麼繫結變數進行執行計劃生成。可能就需要以下的命令進行查詢:
ZHONG@ zhongpdb SQL>var p1 number;
ZHONG@ zhongpdb SQL>begin
2 :p1 := 2300;
3 end;
4 /
PL/SQL 過程已成功完成。
ZHONG@ zhongpdb SQL>select count(*) from t1 where object_id > :p1 ;
COUNT(*)
----------
68839
ZHONG@ zhongpdb SQL>col sql_text format a80
ZHONG@ zhongpdb SQL>SELECT sql_id, child_number , sql_text FROM v$sql WHERE LOWER(sql_text) LIKE '&SQLTEXT';
輸入 sqltext 的值: select count(*) from t1%
原值 1: SELECT sql_id, child_number , sql_text FROM v$sql WHERE LOWER(sql_text) LIKE '&SQLTEXT'
新值 1: SELECT sql_id, child_number , sql_text FROM v$sql WHERE LOWER(sql_text) LIKE 'select count(*) from t1%'
SQL_ID CHILD_NUMBER SQL_TEXT
------------- ------------ --------------------------------------------------------------------------------
2zbp0v9dgsrru 0 select count(*) from t1 where object_id > :p1
ZHONG@ zhongpdb SQL>SELECT name
2 , position
3 , datatype_string
4 , was_captured
5 , value_string
6 FROM v$sql_bind_capture
7 WHERE sql_id = '&SQLID';
輸入 sqlid 的值: 2zbp0v9dgsrru
原值 7: WHERE sql_id = '&SQLID'
新值 7: WHERE sql_id = '2zbp0v9dgsrru'
NAME POSITION DATATYPE_STRING WAS
------------------------------------------------------------ ---------- ------------------------------ ---
VALUE_STRING
-------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------
:P1 1 NUMBER YES
2300
此方法只能對第一次硬解析時有效,軟解析無法截獲變數資訊!
我們通常在想找一個SQL中包含的繫結變數值時,10046是條件反射的一個操作。不過有的時候,我們希望知道一個已經存在的硬解析到底運用了什麼繫結變數進行執行計劃生成。可能就需要以下的命令進行查詢:
ZHONG@ zhongpdb SQL>var p1 number;
ZHONG@ zhongpdb SQL>begin
2 :p1 := 2300;
3 end;
4 /
PL/SQL 過程已成功完成。
ZHONG@ zhongpdb SQL>select count(*) from t1 where object_id > :p1 ;
COUNT(*)
----------
68839
ZHONG@ zhongpdb SQL>col sql_text format a80
ZHONG@ zhongpdb SQL>SELECT sql_id, child_number , sql_text FROM v$sql WHERE LOWER(sql_text) LIKE '&SQLTEXT';
輸入 sqltext 的值: select count(*) from t1%
原值 1: SELECT sql_id, child_number , sql_text FROM v$sql WHERE LOWER(sql_text) LIKE '&SQLTEXT'
新值 1: SELECT sql_id, child_number , sql_text FROM v$sql WHERE LOWER(sql_text) LIKE 'select count(*) from t1%'
SQL_ID CHILD_NUMBER SQL_TEXT
------------- ------------ --------------------------------------------------------------------------------
2zbp0v9dgsrru 0 select count(*) from t1 where object_id > :p1
ZHONG@ zhongpdb SQL>SELECT name
2 , position
3 , datatype_string
4 , was_captured
5 , value_string
6 FROM v$sql_bind_capture
7 WHERE sql_id = '&SQLID';
輸入 sqlid 的值: 2zbp0v9dgsrru
原值 7: WHERE sql_id = '&SQLID'
新值 7: WHERE sql_id = '2zbp0v9dgsrru'
NAME POSITION DATATYPE_STRING WAS
------------------------------------------------------------ ---------- ------------------------------ ---
VALUE_STRING
-------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------
:P1 1 NUMBER YES
2300
此方法只能對第一次硬解析時有效,軟解析無法截獲變數資訊!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12974804/viewspace-763141/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 查詢未使用繫結變數的sqlOracle變數SQL
- 查詢沒有使用繫結變數的sql zt變數SQL
- V$sql查詢未使用繫結變數的語句SQL變數
- 【效能優化】查詢繫結變數的sql語句優化變數SQL
- 關於繫結變數的SQL繫結什麼值變數SQL
- 獲取sql繫結變數的值SQL變數
- ORACLE 獲取繫結變數值Oracle變數
- 如何獲取繫結變數值變數
- 如何用FGA得到繫結變數的值變數
- 如何得到繫結變數的輸入值變數
- Oracle中如何查詢未使用繫結變數的SQL語句?Oracle變數SQL
- 查詢出系統中沒有使用繫結變數的SQL變數SQL
- 繫結變數變數
- 繫結變數之繫結變數窺探(Bind Peeking)變數
- 繫結變數,組合查詢方式,導致CBO錯誤一例變數
- Oracle 繫結變數Oracle變數
- 【實驗】sql語句在shared_pool中的查詢(程式 繫結變數)SQL變數
- 繫結變數的測試變數
- 繫結變數窺測的演變變數
- 單個分割槽索引失效導致繫結變數查詢無法使用索引索引變數
- 檢視繫結變數變數
- 繫結變數窺測變數
- PLSQL使用繫結變數SQL變數
- Oracle之繫結變數Oracle變數
- 關於繫結變數變數
- Oracle9i, 10g 如何抓取繫結變數的值Oracle變數
- 改變gridview繫結列值的方法View
- v$sql_bind_capture與timestamp型別的繫結變數的數值SQLAPT型別變數
- 繫結變數的一個例子變數
- 繫結變數的使用範圍變數
- oracle繫結變數的測試Oracle變數
- 關於繫結變數的使用變數
- 【優化】使用繫結變數 OR 不使用繫結變數,這不是問題!優化變數
- 通過ERRORSTACK找出正在執行的SQL中的繫結變數值ErrorSQL變數
- HyperGraphDB查詢中的變數變數
- ORACLE 繫結變數用法總結Oracle變數
- 使用繫結變數的一點總結!變數
- 【最佳化】使用繫結變數 OR 不使用繫結變數,這不是問題!變數