在EXECUTE IMMEDIATE v_SQL;加断点,看v_SQL是什么结果。
另外注意v_SQL的长度不能比实际拼出来的字符串短

解决方案 »

  1.   

    我在这个procedure里的这句语句前,把v_SQL打进了log,log里的这句话是可以执行的。
    “注意v_SQL的长度不能比实际拼出来的字符串短”,不好意思,我不太理解。谢谢。
      

  2.   

    哦,“注意v_SQL的长度不能比实际拼出来的字符串短”,你是说 v_SQL 的定义
    v_SQL                VARCHAR2(2048);
    够了。
      

  3.   


      “注意v_SQL的长度不能比实际拼出来的字符串短"
       ------------------------------------------
        这句话的意思就是 假如你定义了 declare v_sql varchar2(10),
         给v_sql赋值时它的长度不能大于10.     declare 
            v_sql varchar2(10);
         begin
           v_sql :='This's test'  --会出错
           ...
         end;   
      

  4.   

    EXECUTE IMMEDIATE 要注意什么吗?
    还有,在sqlplus好像能直接用EXECUTE
    可是在procedure里,把IMMEDIATE就编译不过
      

  5.   

    好像是多了一个‘;’
    v_sql := 'insert into ... select ...;'
    把;去掉就对了