首页 > 代码库 > 获取绑定变量语句中传入的值

获取绑定变量语句中传入的值

查看绑定变量的值
 
--还有一种方式
--首先查询出这条SQL 语句的 HASH_VALUE
select A.SQL_ID,A.HASH_VALUE,A.CHILD_NUMBER,A.SQL_TEXT from v$sql a where A.SQL_TEXT like ‘SELECT T_LTE_CARD_INFO.PK,%‘
 
2621316314    0  SELECT T_LTE_CARD_INFO.PK,%.....
 
--传入HASH_VALUE的值
select * from table(dbms_xplan.display_cursor(2621316314,0,‘ADVANCED‘));
select * from table(dbms_xplan.display_cursor(2621316314,0,‘ADVANCED ALLSTATS LAST PEEKED_BINDS‘));
或者
select t.* from v$sql s,table(dbms_xplan.display_cursor(s.sql_id,s.child_number,‘ADVANCED ALLSTATS LAST PEEKED_BINDS‘)) t where s.sql_id = ‘6g0tcbdcr08b9‘;

查询结果中有 如下的值就是传入的值及类型
Peeked Binds (identified by position):
--------------------------------------

   1 - (NUMBER): 99
   2 - (NUMBER): 100
 
--使用视图获取
【视图V$SQL_BIND_CAPTURE】
SQL> select name,datatype_string,VALUE_STRING from v$sql_bind_capture where sql_id=‘xxx‘;
需要注意三点:
1.这个视图是一个快照视图,并不会保存所有执行过的SQL的绑定变量,能不能看到完全靠运气
2.这个视图只保留同一SQL最后一次捕获到的绑定变量
3.如果绑定变量是DATE类型则无法直接查看到的,后面会讲查看的技巧
 
视图DBA_HIST_SQLBIND】
这个视图是v$sql_bind_capture的历史数据,有同一个SQL不同时间的绑定变量值。不过也是不完整的。
 
--这个sql从awr中读取绑定变量值信息
select instance_number,  sql_id,name, datatype_string, last_captured,value_string from dba_hist_sqlbind where sql_id=‘fahv8x6ngrb50‘order by LAST_CAPTURED,POSITION;
 
 


来自为知笔记(Wiz)


获取绑定变量语句中传入的值