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

TL; DR:

如何声明用户定义的记录类型,以便如果我不填充其中一个字段,该字段将遵循其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字段中插入任​​何值;我只填充了5个可用字段中的4个.

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

PL/sql: ORA-00913: too many values

如果我从RECORD_OPTION_ATTRIBUTES声明中删除option_attributes字段,则包将进行编译.

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值