我写了一个查询的存储过程。在 p_SQL := p_SQL || p_Dupdatesql ||p_Where;
 EXECUTE IMMEDIATE p_SQL;发生ora 24338  错误。但是把p_SQL 提取出来执行没有任何问题。而且,如果查询的结果 为空的话没有任何问题。如果结果不为空。就有问题。p_SQL 的内容为
UPDATE  TT_Hospital2_uZMAzlhRQe SET  TT_Hospital2_uZMAzlhRQe.Levels00000000000000001002 = (select TT_Hospital_YMIUmSxuhN.Levels00000000000000001002 from TT_Hospital2_uZMAzlhRQe,TT_Hospital_YMIUmSxuhN 
   WHERE TT_Hospital2_uZMAzlhRQe.PartnerID = TT_Hospital_YMIUmSxuhN.PartnerID),
  TT_Hospital2_uZMAzlhRQe.Employee00000000000000001002 = (SELECT TT_Hospital_YMIUmSxuhN.Employee00000000000000001002 FROM TT_Hospital2_uZMAzlhRQe,TT_Hospital_YMIUmSxuhN 
                     WHERE TT_Hospital2_uZMAzlhRQe.PartnerID = TT_Hospital_YMIUmSxuhN.PartnerID)where exists (select ''1'' from TT_Hospital2_uZMAzlhRQe,TT_Hospital_YMIUmSxuhN WHERE TT_Hospital2_uZMAzlhRQe.PartnerID = TT_Hospital_YMIUmSxuhN.PartnerID)请问怎么回事啊????

解决方案 »

  1.   

    你后面的那两个是什么东东?
    p_Dupdatesql
    p_Where
      

  2.   

    哦,你是整个连起来是SQL文,我还以为就那一部分呢?
    我建议最好在EXECUTE IMMEDIATE 之前用
    dbms_ouput.put_line(p_sql);
    看与你预想的有什么不同!
      

  3.   

    dbms_ouput.put_line(p_sql); 是什么?是oracle下的马?
      

  4.   

    dbms_output.put_line(p_SQL);这句话,直接过去不起的
      

  5.   

    先在SQLPLUS里面用set serveroutput on;设置一下.
      

  6.   

    我在SQL PLUS下面执行了一下set serveroutput on但是还是到这句话,就报错了
      

  7.   

    那你把所有的程序贴出来我看看.我感觉没有什么错误啊?
    而且DBMS_OUTPUT.PUTLINE()怎么会报错呢?
      

  8.   

    把那个update改为
    UPDATE  TT_Hospital2_uZMAzlhRQe SET (Levels00000000000000001002,Employee00000000000000001002) = (select Levels00000000000000001002,Employee00000000000000001002 from TT_Hospital_YMIUmSxuhN WHERE TT_Hospital2_uZMAzlhRQe.PartnerID = TT_Hospital_YMIUmSxuhN.PartnerID) where exists (select 1 from TT_Hospital_YMIUmSxuhN WHERE TT_Hospital2_uZMAzlhRQe.PartnerID = TT_Hospital_YMIUmSxuhN.PartnerID)
    后再看看是否出错?
    还有就是直接将上面的SQL赋值给p_SQL,看看是否还出错?
      

  9.   

    大哥,ORACLE里面可以用
    UPDATE TABLE
    SET (COL1,COL2)=(VALUE1,VALUE2)这种格式吗?楼主的方式是正确的啊?可能就是拼字符串的时候出了点差错,所以我建议他打印出来看看!
      

  10.   

    to sbaz:你为什么不去试试呢?
      

  11.   

    oerr ora 24338
    24338, 00000, "statement handle not executed"
    // *Cause:  A fetch or describe was attempted before executing a
    //          statement handle.
    // *Action: Execute a statement and then fetch or describe the data.