比如说我在程序中执行的语句为:
insert into tablename values(:para1,:para2);
现在需要通过什么方式可以得到真实的oracle执行语句而不是以变量的形式。
通过select * from v$sql;得到的执行语句是:
insert into tablename values(:1,:2);
假如程序中para1='a'
para2='b'则
我想得到的结果为:
insert into tablename values('a','b');
我也用10046跟踪过在trc文件中记录的也是变量:1,:2而不是实际变量的值。
谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    10046的级别设置不对啊。设置对了就可以。
    可用级别:
    level 1:跟踪SQL语句,等于sql_trace=true 
    level 4:包括变量的详细信息 
    level 8:包括等待事件 
    level 12:包括绑定变量与等待事件 
      

  2.   

    我设置过了等于4的,但是得到的trc文件中还是那种变量的形式。
      

  3.   

    得到的trc文件不要用tkprof工具处理,处理当然不会告诉你bind值的。用文本编辑器打开trc文件,找到对于的sql,慢慢看就看到了。
      

  4.   

    是这样子的,设置成4以后,在trc中可以用文本编辑器打开,但是出现的是下面的形式:
    insert into tablename values(:1,:2);
    然后大致是这样子:
    bind0:
    ……………………
    value='a'
    bind1:
    ……………………
    value='b'
    可能也是我没有讲清楚,我想要的结果不是这个样子的,我需要的结果是直接显示为
    insert into tablename values('a','b');
    不知道能不能得到这样的东西。
    我知道sql server的profile是可以得到的,我想oracle应该也可以吧。
    谢谢!!!!!!!!!!!!!
      

  5.   

    那你只能自己再写个工具吧trc文件里的内容组合成正常的sql语句吧
      

  6.   

    大家能否都想想办法。先谢谢了
    能实现这种方式的方法难道oracle就没有让人看的比较直观的东西吗?
    如果是动态的也行啊,就是我执行一条,它就显示一条语句。
    或者有什么oracle的小工具可以实现这样一个功能也行啊!