如何将记录类型值传递给过程/函数中的记录类型参数

时间:2013-07-12 11:36:51

标签: oracle plsql user-defined-types

procedure P_names(  A OUT NOCOPY  A_Rec_Type
                     ,  B  OUT NOCOPY B_Tbl_Type);

在上面的PL / SQL过程中,如何将值传递给作为记录类型的参数A和B. 和表类型参数?

2 个答案:

答案 0 :(得分:1)

因为它们是OUT参数,所以需要使用PL / SQL变量调用它们,如下所示:

declare
    lrt_a A_Rec_Type;
    lrt_b B_Tbl_Type;
begin
    p_names (lrt_a, lrt_b);
end;
/

在内部,您可以像任何其他变量一样为它们分配值。因为这些是记录类型,所以通常期望您使用查询填充它们:

begin
    select * into a
    from table_a
    where rownum = 1;

    select * into b
    from table_b
    where rownum = 1;
end;

请注意,我在那里使用了ROWNUM。这是因为记录类型接受单行,因此您需要适当地限制查询。如果要接受多行,则需要使用嵌套表类型:

type a_recs_type is table of a_rec_type;

答案 1 :(得分:0)

使用类似

的内容
a(i).field_name := <your value>


b.field_name := <your value> ;

其中i是表格中的索引