我有一个存储过程有一个参数:
 create or replace procudure p_test(a varchar2) is
 begin 
     insert into table1 
     select * from table2 where col1 in (a)
;
end p_test;注:col1是一个number字段我在执行这个存储过程时:exec p_test('3,2');
结果报ORA-01722: invalid number ,我不清楚这个参数应该怎么传入,如何赋值!请指教!

解决方案 »

  1.   

    3,2是什么数值啊?况且传进来的也应该是NUMBER啊,传进来VARCHAR2,也不做转换,直接让NUMBER和VARCHAR2比较,能对吗?
      

  2.   

    你现在这样做的话,是比较col1是不是在3,2这个字符串里,而不是3,2这两个数值里
      

  3.   

    后来我改成下面这样:
    insert  into  table1    
             select  *  from  table2  where  to_char(col1)  in  (a)  
    ;  
    执行exec p_test('1,2');
    执行成功,但是结果表并没有值,传进去的值应该还是不对
      

  4.   

    你改成这样试试
    execute immediate'select * from table2 where col1 in ('||a||')'
      

  5.   

    execute immediate'insert  into  table1   select * from table2 where col1 in ('||a||')'