2014-03-04 39 views
0

我需要测试一个涉及用PL/SQL编写的数组的存储过程。我无法看到PL/SQL内容(商店规则),但需要调用proc。我想知道如何调用以下proc直接从蟾蜍调用3个整数数组。方法签名看起来像这样。如何测试涉及Toad数组的PL/SQL过程?

过程persistChanges(myKey中的NUMBER,arrayOfIntsFirst numberTableType,arrayOfIntsSecond numberTableType,arrayOfIntsThird numberTableType)。

我如何在TOAD中调用PL/SQL过程,我可以硬编码参数的值来测试过程?我被告知蟾蜍无法做到这一点。非常感激!!!

我不得不相信有一种方法来poplate这些变量,但只是不知道如何去这样做......

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

试着这么做:

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; 

蟾蜍只是一个开发环境,它不会限制你编写如上所述的匿名块。 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。希望有所帮助。