我需要测试一个涉及用PL / SQL编写的数组的存储过程。我无法看到PL / SQL内容(商店规则),但需要调用proc。我想知道如何调用以下proc直接从toad调用3个整数数组。方法签名看起来像这样。
过程persistChanges(NUMBER中的myKey,arrayOfIntsFirst numberTableType,arrayOfIntsSecond numberTableType,arrayOfIntsThird numberTableType)。
如何在TOAD中调用PL / SQL proc,我可以对参数的值进行硬编码来测试proc?我被告知在Toad中无法做到这一点。非常感谢!!!
我不得不相信有一种方法来填充这些变量,但只是不确定如何去做...
DECLARE
myKey NUMBER;
arrayOfIntsFirst PL/SQL TABLE;
arrayOfIntsSecond PL/SQL TABLE;
arrayOfIntsThird PL/SQL TABLE;
BEGIN
myKey := NULL;
-- arrayOfIntsFirst := NULL; Modify the code to initialize this parameter
-- arrayOfIntsSecond := NULL; Modify the code to initialize this parameter
-- arrayOfIntsThird := NULL; Modify the code to initialize this parameter
MY_SCHEMA.PKG_MYPACKAGE.PERSISTCHANGES ( myKey, arrayOfIntsFirst,
arrayOfIntsSecond, arrayOfIntsThird );
COMMIT;
END;
答案 0 :(得分:0)
尝试类似:
declare
l_nums t_num_tab;
begin
l_nums := t_num_tab();
l_nums.extend(2);
l_nums(1) := 56;
l_nums(2) := 42;
for i in l_nums.first .. l_nums.last
loop
dbms_output.put_line( 'Number is: ' || l_nums(i) );
end loop;
end;
Toad只是一个开发环境,它不会限制你编写像上面这样的匿名块。 t_num_tab被定义为数字表:
CREATE OR REPLACE TYPE t_num_tab as table of number;
您甚至不需要首先正式扩展集合并分配值。您可以一步初始化:
declare
l_nums t_num_tab;
begin
l_nums := t_num_tab(23,89,152);
...
end;
了解更多here。希望有所帮助。