您的位置:首页 > 其它

如何不做跟踪找到绑定变量值

2016-04-12 16:08 232 查看
译自文章:How To Find The Value of a Bind Variable Without Tracing (文档 ID 273121.1)

本文目标
主要介绍了如何在不启用sql_tracing的情况下确定绑定变量值。

范围&使用

通常在诊断时需要确认绑定变量的值。

查找绑定变量值的方法:
SQL> variable bind varchar2(20);
SQL> exec :bind := 'SMITH';

PL/SQL procedure successfully completed.

SQL> select * from emp where ename=:bind;

EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM
---------- ---------- --------- ---------- --------- ---------- ----------
DEPTNO
----------
7369 SMITH      CLERK           7902 17-DEC-80        800
20

SQL> select sql_id, sql_text from v$sql where sql_text like 'select * from emp%';

SQL_ID
-------------
SQL_TEXT
--------------------------------------------------------------------------------
d5c75d9t3yf8g
select * from emp where ename=:bind

SQL>  select value_STRING from v$sql_bind_capture where sql_id='d5c75d9t3yf8g';

VALUE_STRING
--------------------------------------------------------------------------------
SMITH

但是请注意,如果STATISTICS_LEVEL变量值设置为BASIC,那么变量捕获是不起作用的。

*)还有如下限制:
版本11.2
V$SQL_BIND_CAPTURE

绑定数据
在一条sql语句中,绑定变量的绑定值并非总是能捕获的。只有绑定变量是简单类型(不含LONG, LOB, and ADT datatypes)且绑定变量在sql语句的where或者having字句时才会被该视图捕获。

相关文档:
-----------------
10G Database Reference Part Number B10755-01

实验:
1.	创建测试表,并插入数据

create table test_norm(name varchar2(10));
insert into test_norm values('test');
commit;
2.	设定变量及赋值并检查结果
SQL> variable test_n varchar2(10);
SQL> exec :test_n :='test'
PL/SQL procedure successfully completed.
SQL> select * from test_norm where name=:test_n;

NAME
----------
test

SQL> select sql_id, sql_text from v$sql where sql_text like 'select * from test_norm%';

SQL_ID
-------------
SQL_TEXT
--------------------------------------------------------------------------------
0uhs0u0xug2dq
select * from test_norm where name=:test_n

SQL> select value_STRING from v$sql_bind_capture where sql_id= '0uhs0u0xug2dq';

VALUE_STRING
--------------------------------------------------------------------------------
test
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: