如何测试涉及Toad数组的PL / SQL过程?

时间:2014-03-04 14:03:32

标签: oracle toad

我需要测试一个涉及用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; 

1 个答案:

答案 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。希望有所帮助。