请说明NVL
功能的用法。
如果未从SELECT
查询中找到值,则需要插入值999999,但插入值的表格列的类型为NOT NULL
,并且我们执行select查询以获取值的表也是NOT NULL
类型。
SOURCE(用于获取列值以加载到T_DATA表中)
COLUMN_NAME DATA_TYPE NULLABLE COLUMN_ID
SRC_ID NUMBER No 1
T_DATA表(加载表)
COLUMN_NAME DATA_TYPE NULLABLE
SRC_ID NUMBER No
INSERT
查询:
INSERT INTO T_DATA
(select (SELECT NVL(SRC_ID,999999) FROM SOURCE
WHERE SRC_DESC = LTRIM(TABLE_ID)), class_code,line_number,sysdate
from T_VB_DATA);
因为SRC_ID
IN TABLE源是NOT NULL
,即使我使用NVL
函数,它也不会做任何事情。那么,我是否认为它应该接受NULL
值?
将列插入t_data
表时,该列不能为NULL
。
答案 0 :(得分:0)
您似乎正确使用NVL
功能。根据您的说明,听起来您实际上并不需要使用NVL
函数,因为SRC_ID
中的SOURCE
列永远不会有NULL
。加载的目标表T_DATA
也可以具有NOT NULL约束,因为您提供的示例插入查询不会尝试将null
值插入该列。
尝试执行insert语句时是否有错误消息?或者您是否正在处理设计细节并希望确认您了解NVL功能以及如何确保插入默认值而不是null
?