oracle 数组的使用与调试(三)

过程编写完毕后,接下来调试程序。
  关于怎么样调用入参是数组的过程,耽误了我很多时间,学艺不精啊!
  对于入参是集合(比如数组) 的,我们需要单独写一个过程来调用它。plsql中点击过程右键调试,对于数组,并没有赋值的地方。
   -------------------------------------------------------------------------------------
   DECLARE
   type array1 is table of VARCHAR2(32767) index by pls_integer;--定义一维数组
   p_array array1;
  begin
   p_array(1):= 'US-Search-Product-Test';
   p_array(2):= 'US-Search-Product-Test';
   PKG_PT_ADS.PROC_REPORT_ACT('','','','','','','',p_array);
  
   end;
   -------------------------------------------------------------------------------------
   在plsql的command window窗口执行上面这个过程,并不能通过,会报如下错误:
   -------------------------------------------------------------------------------------
   ORA-06550: line 7, column 4:
  PLS-00306: wrong number or types of arguments in call to 'PROC_REPORT_ACT'
  ORA-06550: line 7, column 4:
   PL/SQL: Statement ignored
   -------------------------------------------------------------------------------------
   这个问题的原因是:过程中需要传入的是自定义的数组类型array1。在上面这段代码中,重新定义了array1数组,此时2个array1虽然名称相 同,但并不是同一类型的。
  修改代码如下:
   -------------------------------------------------------------------------------------
   DECLARE
   p_array PKG_PT_ADS.array1 ;--定义一维数组
  
  begin
   p_array(1):= 'US-Search-Product-Test';
   p_array(2):= 'US-Search-Product-Test';
   PKG_PT_ADS.PROC_REPORT_ACT('','','','','','','test',p_array);
  
   end;
   -------------------------------------------------------------------------------------
   ok,正常调用了。
  ps:在plsql中,除了右键过程调试存储过程外,还可以直接new一个test window窗口来进行测试。方便又实用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值