你在CB中是通过什么方式执行那个SQL的?我在delphi中,通过TQuery控件来执行那个SQL是没有错误的。此外,你执行SQL是用system用户的吗?还可以在应用程序中打开SQL TRACE(执行alter session set TRACE_ENABLED=true),跟踪到底是执行了什么SQL语句。

解决方案 »

  1.   

    我用的是adoquery,执行sql的是system用户,怎么用SQL TRACE?没用过阿!
      

  2.   

    不好意思,上面写错了。起用sql trace是执行alter session set sql_trace=true。
    在你的应用程序中执行上面的SQL,之后只要会话没结束,所有执行的SQL都会被保存到服务器的%ORACLE_HOME%\admin\udump目录下的一个跟踪文件中。要查看跟踪文件的内容,需要执行tkprof(只有服务器端才有这个实用程序),将TRACE文件格式化输出。如:
    tkprof TRACEFILENAME OUTPUTFILENAME record=SQLFILENAME sys=no
    然后所有SQL都保存到SQLFILENAME文件中了。
      

  3.   

    问题的关键在于:我在sql*plus中执行没有任何错误,在cb中用TAdoQuery调用,则出现错误!但是返回的数据却是对的!这是怎么回事呢?谢谢