过程编写完毕后,接下来调试程序。
关于怎么样调用入参是数组的过程,耽误了我很多时间,学艺不精啊!
对于入参是集合(比如数组) 的,我们需要单独写一个过程来调用它。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窗口来进行测试。方便又实用。
oracle 数组的使用与调试(三)
最新推荐文章于 2023-01-09 10:44:41 发布