现在项目用到一个删除多表数据的功能,想将id数组传给存储过程来实现。
自己定义的类型为
CREATE OR REPLACE TYPE array_num IS TABLE OF NUMBER写的例子存储过程为:
create or replace procedure proc_delete(arr in  array_num) isbegin
  for i in 1.. arr.last loop
    dbms_output.put_line('12222');
  end loop;end proc_delete;报的错误为:
Compilation errors for PROCEDURE BJYD.PROC_DELETEError: PLS-00201: 必须声明标识符 'PLITBLM'
Line: 0
Text: create or replace procedure proc_delete(arr in array_num) isError: PLS-00302: 必须声明 'COUNT' 组件
Line: 4
Text: for i in 1.. arr.count loopError: PL/SQL: Statement ignored
Line: 4
Text: for i in 1.. arr.count loop
但是在另外一个库编译就没有问题,是不是要给什么权限啊,我的类型和存储过程都在一个用户下

解决方案 »

  1.   

    你这是不是其他地方报错了? plitblm 这个,在你的示例里都没看到的
      

  2.   

    报的错误为:
    Compilation errors for PROCEDURE BJYD.PROC_DELETE你这个过程是在包BJYD里的吧?建议贴出全的代码看下
      

  3.   

    bjyd是我的用户名,我这个是直接写在过程里的,没往包里写,那些就是全部的代码了
      

  4.   

    array_num 这个你定义到那里了  看 定义的这个 array_num 有没有什么问题
      

  5.   

    就是在我的bjyd用户下面定义的,就这句话CREATE OR REPLACE TYPE array_num IS TABLE OF NUMBER