gpt4 book ai didi

oracle - 当嵌套表在记录类型内时如何将数据填充到 Oracle 中的嵌套表中

转载 作者:行者123 更新时间:2023-12-01 10:52:03 28 4
gpt4 key购买 nike

我需要能够从过程中以游标变量的形式返回值列表。但在列表中,某些字段可以有多个值

例如一个产品的描述字段中可以有多个描述行(从不同的表中获取)。

我正在考虑在记录类型中创建一个嵌套表并将其与游标相关联。

TYPE N_TYPE IS TABLE OF VARCHAR2(350);
TYPE TYPE1 IS RECORD ( FIELD_1 VARCHAR2(100)
, FIELD_2 VARCHAR2(30)
, FIELD_3 N_TYPE);

TYPE T_CUR IS REF CURSOR RETURN TYPE1;

Procedure p_proc (p_1 IN VARCHAR2, p_2 OUT t_cur) is
-- processing input parameter and passing out a cursor to host application
end p_proc;

在此过程中,我需要通过 p_1到表中并使用显式游标将数据检索到 Field_1Field_2 .

然后从另一个表中,我需要将多条记录分配到 Field_3 .

当表是记录中数据类型的一部分时,谁能告诉我如何将数据填充到嵌套表中?以及如何在填充后进行检查。以及如何将其分配回 out 参数的游标变量?

最佳答案

本文档:http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/composites.htm#CIHIEBJC
描述了如何在 PL/SQL 中使用集合类型:

基本示例:

DECLARE
TYPE N_TYPE IS TABLE OF VARCHAR2(350);
TYPE TYPE1 IS RECORD ( FIELD_1 VARCHAR2(100)
, FIELD_2 VARCHAR2(30)
, FIELD_3 N_TYPE);
v_n n_type;
v_type1 type1;
BEGIN
v_n := n_type(); -- initialize an empty collection
v_n.extend( 3 ); -- add 3 elements to the table
v_n( 1 ) := 'First string ';
v_n( 2 ) := 'Second string ';
v_n( 3 ) := 'Third string ';
v_n.extend; -- add 1 element at the end of the table
v_n( v_n.last ) := 'Next string';

--assign the table to the field_3 of the record
v_type1.field_3 := v_n;

-- check values
FOR i in v_type1.field_3.first .. v_type1.field_3.last LOOP
DBMS_OUTPUT.PUT_LINE( v_type1.field_3( i ) );
END LOOP;
END;
/

--- DBMS_OUTPUT -------
First string
Second string
Third string
Next string

关于oracle - 当嵌套表在记录类型内时如何将数据填充到 Oracle 中的嵌套表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18017154/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com