2015-07-22 105 views
-1

表ABC有以下列如何通过匿名块值与PLSQL表参数

approved_ain 
    1 
    2 
    12 
    34 

我有一个过程

create or replace procedure abc(p_admin varchar2, 
p_approved_ain abc.approved_ain)--plsql table in parameter 

begin 

end; 

现在,当我拨打一个匿名块这个程序: -

declare 
l_Admin varchar2(100); 
l_approved_ain abc.approved_ain; 

begin 
abc(l_Admin ,l_approved_ain); 
commit; 

end; 

如何将plsql表的approved_ain值传递给这个匿名块。这就是我想通过传递ABC台approved_ain列的值来测试它.......

答:

declare 
    l_Admin varchar2(100); 
    l_approved_ain abc.approved_ain; 

    begin 
l_approved_ain(1) :=123; 
l_approved_ain(2) :=4645; 
    abc(l_Admin ,l_approved_ain); 
    commit; 

    end; 
+0

您无法将参数传递给匿名PL/SQL块。相反,块必须从某处读取值。 – user272735

+0

问题是如何从某个地方取消值 –

+0

在同一个模式中不能同时使用表'abc'和过程'abc',它们的名称会发生​​冲突。 'abc.approved_ain'是列引用,不是数据类型引用,除非'abc'也是您的模式名称。在这种情况下,如何定义'abc.approved_ain'? – Sentinel

回答

0

鉴于这一事实,你只是想测试一下,怎么样只设置匿名块中的值:

declare 
l_Admin varchar2(100) := 'string'; 
l_approved_ain abc.approved_ain := ???; 

begin 
abc(l_Admin ,l_approved_ain); 
commit; 

end;