v_delString  := 'Delete ' || p_table || ' where ID IN ('||p_id||')';
gb_maintain.main('Delete','GB_NJSL1','aaa','''79'',''80''');

解决方案 »

  1.   

    试试
    gb_maintain.main('Delete','GB_NJSL1','aaa','79'||','||'80');
      

  2.   

    to beckhambobo(beckham):
       OK了!但我有个疑问,动态SQL不是要联编输入变量的吗?为什么这样写:
       v_delString  := 'Delete ' || p_table || ' where ID IN (:ID)';
       DBMS_SQL.BIND_VARIABLE(v_CursorID,':ID',p_id);
    就怎么也梆定不了变量呢?TO Lastdrop(空杯) :   p_number:=DBMS_SQL.Execute(v_CursorID); 这行过不去!:( 
    估计是梆定的时候识别不出来,我在过程里直接写
    DBMS_SQL.BIND_VARIABLE(v_CursorID,':ID','80,76');
    都不行,不知道为什么?
    目前我的问题已解决,望求甚解,请高手明示!:)
      

  3.   

    新发现:
       v_delString  := 'Delete ' || p_table || ' where ID IN (:ID)';
       DBMS_SQL.BIND_VARIABLE(v_CursorID,':ID',p_id);当表中记录为空的时候 gb_maintain.main('Delete','GB_NJSL1','aaa','79,80');
    可以成功执行!只要有记录就不行!为啥???
      

  4.   

    你把
          COMMIT;
          --Close the curse
          DBMS_SQL.CLOSE_CURSOR(v_CursorID);
    这两句的顺序调一下试试。              
          --Close the curse
          DBMS_SQL.CLOSE_CURSOR(v_CursorID);
          COMMIT;
      

  5.   

    绑定变量与
    “当表中记录为空的时候 gb_maintain.main('Delete','GB_NJSL1','aaa','79,80');
    可以成功执行!只要有记录就不行!”有关吗?
      

  6.   

    不知道,反正
    DBMS_SQL.BIND_VARIABLE(v_CursorID,':ID',p_id);
    怎么也过不去?只有当表中没记录时可以,所以我也糊涂了!
    我在过程里DBMS_SQL.BIND_VARIABLE(v_CursorID,':ID',97,98);
    它都不报错,只梆定了97,98就不管了,语句照样执行,真怪!
      

  7.   

    今天感谢beckhambobo(beckham)和Lastdrop(空杯),既然问题解决了,我先结贴,如果Lastdrop(空杯)对这个问题还感兴趣,我有什么新发现,会给你发短信息的!
    感谢二位~ :)