gpt4 book ai didi

oracle - 如何填充具有默认值的用户定义记录?

转载 作者:行者123 更新时间:2023-12-04 15:40:57 24 4
gpt4 key购买 nike

TL;博士:

如何声明用户定义的记录类型,以便如果我不填充其中一个字段,该字段将遵守其 DEFAULT ?

细节:

在我的包规范中,我定义了以下记录和表类型:

/* set up a custom datatypes that will allow us to pass an array of values into CCD_UI procedures and functions */
TYPE RECORD_OPTION_ATTRIBUTES IS RECORD(
option_name VARCHAR2(200) NOT NULL DEFAULT 'INVALID NAME"', /* default intentionally breaks HTML */
option_value VARCHAR2(200) NOT NULL DEFAULT 'INVALID VALUE"', /* default intentionally breaks HTML */
option_selected_ind NUMBER(1) NOT NULL DEFAULT '0',
option_class VARCHAR2(200) DEFAULT NULL,
option_attributes VARCHAR2(200) DEFAULT NULL
);

TYPE TABLE_OPTION_ATTRIBUTES IS TABLE OF RECORD_OPTION_ATTRIBUTES
INDEX BY BINARY_INTEGER;

在包体中,我的功能与此非常相似:
PROCEDURE populate_user_defined_table()
AS

v_criteria_pairs TABLE_OPTION_ATTRIBUTES;

BEGIN

SELECT some_column1 AS option_name, some_column2 AS option_value, some_column3 AS selected_ind,
some_column4 AS option_class
BULK COLLECT INTO v_criteria_pairs
FROM Some_Table
WHERE some_column='whatever';

END;

敏锐的眼睛会注意到我没有在 option_attributes 中插入任何值。 field ;我只填充了 5 个可用字段中的 4 个。

当我尝试编译这个包时,我从包体中收到以下错误:

PL/SQL: ORA-00913: too many values



如果我放弃 option_attributes来自 RECORD_OPTION_ATTRIBUTES 的字段声明,包将编译。

如果我没有为 option_attributes 指定值,我该如何声明记录类型? ,该字段将默认为 NULL ?

最佳答案

AFAIK 根据 Oracle doc , “要将记录中的所有字段设置为默认值,请为其分配一个相同类型的未初始化记录”,这是他们的示例:

DECLARE
TYPE RecordTyp IS RECORD (field1 NUMBER,
field2 VARCHAR2(32) DEFAULT 'something');
rec1 RecordTyp;
rec2 RecordTyp;
BEGIN
-- At first, rec1 has the values you assign.
rec1.field1 := 100; rec1.field2 := 'something else';
-- Assigning an empty record to rec1
-- resets fields to their default values.
-- Field1 is NULL and field2 is 'something'
-- due to the DEFAULT clause
rec1 := rec2;
DBMS_OUTPUT.PUT_LINE
('Field1 = ' || NVL(TO_CHAR(rec1.field1),'<NULL>') || ',
field2 = ' || rec1.field2);
END;
/

关于oracle - 如何填充具有默认值的用户定义记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40288390/

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