GPO ( Grupo de Profissionais Oracle )
A maior comunidade Oracle do Brasil !

Recuperando Variável Bind com a V$SQL_BIND_CAPTURE

Segue abaixo uma forma bem simples de pegar o valor de uma variável bind utilizando a view V$SQL_BIND_CAPTURE . Precisei recentemente pegar os valores de uma consulta que uma sessão estava realizando e o trace não estava ajudando por “n” fatores e utilizando o velho dicionario de dados foi bem mais simples nesse caso.

1) Buscando o valor o sql_id na V$SQL :

SELECT SQL_ID,SQL_TEXT FROM V$SQL WHERE SQL_TEXT LIKE '%all_tab_columns%';
SQL_TEXT SQL_ID ---------------------------------------- ------------- select col.*, com.Comments from sys.all_ 032n4avhdnaz3 tab_columns col, sys.all_col_commen WHERE o.owner LIKE :1 ESCAPE '/' AND o.object_name LIKE 2: ESCAPE '/'

Atenção a identificação das binds , essa mesma posição vai ser recuperada logo a frente.

2) Olhando a V$SQL_BIND_CAPTURE

SQL> desc V$SQL_BIND_CAPTURE

  Name                      Null?    Type
  ------------------------- -------- -----------------
  ADDRESS                            RAW(8)
  HASH_VALUE                         NUMBER
  SQL_ID                             VARCHAR2(13)
  CHILD_ADDRESS                      RAW(8)
  CHILD_NUMBER                       NUMBER
  NAME                               VARCHAR2(30)
  POSITION                           NUMBER
  DUP_POSITION                       NUMBER
  DATATYPE                           NUMBER
  DATATYPE_STRING                    VARCHAR2(15)
  CHARACTER_SID                      NUMBER
  PRECISION                          NUMBER
  SCALE                              NUMBER
  MAX_LENGTH                         NUMBER
  WAS_CAPTURED                       VARCHAR2(3)
  LAST_CAPTURED                      DATE
  VALUE_STRING                       VARCHAR2(4000)
  VALUE_ANYDATA                      ANYDATA

Buscando o valor da bind desejada :

SQL> SELECT NAME,TO_CHAR(LAST_CAPTURED,'DD/MM/YYYY HH24:MI:SS'),VALUE_STRING 
FROM V$SQL_BIND_CAPTURE WHERE SQL_ID='0prhvnya3f97z' ;
NAME TO_CHAR(LAST_CAPTUR VALUE_STRING ------------------------------ ------------------- ------------------------------ :1 01/08/2011 16:24:39 REPORT_SERVER_AALTAMIRANO :2 01/08/2011 16:24:39 ROLE

Pronto, de forma simples foi recuperado os valores passados no filtro da consulta SQL.

Fonte

Share

You may also like...

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *