我正在使用Oracle数据库。我有一个sql表PS_Z_STAGE_TEST_JE
,它有三个字段(EMPLID
,LAST_NAME
,FIRST_NAME
)。
我正在尝试执行select
语句,该语句将从sql表中提取许多EMPLID:ps_vc_plan_mem
并将其插入EMPLID
列,同时保留其他两个字段({{1 }}和LAST_NAME
)FIRST_NAME
。
下面是我的SQL但它会说
无法将空值插入
null
当我尝试运行它时。
LAST_NAME
答案 0 :(得分:1)
我在您的查询中看到的唯一明显的问题是最后的星号:
INSERT INTO sysadm.PS_Z_STAGE_TEST_JE(EMPLID)
SELECT DISTINCT emplid
FROM ps_vc_plan_mem
WHERE vc_plan_id IN ('PNC-RS', 'PNC-SO', 'PNC-ESPP');
请注意distinct
不是函数。它是select
上的修饰符,因此括号并不意味着什么。
答案 1 :(得分:0)
SQL语句末尾有星号。请删除并重试。
如果[sysadm]。[PS_Z_STAGE_TEST_JE]表有PK,则可能需要在运行语句之前截断表。
答案 2 :(得分:0)
错误消息正如它所说的那样。您的last_name列必须定义为非null。因此,您不能在其中插入null。由于您没有定义插入到插入列中的内容,因此它会尝试默认插入null并失败。
您必须在姓氏中插入内容。如果您无法获得要插入的实际姓氏,我建议使用默认字符串或空字符串。
INSERT INTO sysadm.PS_Z_STAGE_TEST_JE (EMPLID, LAST_NAME)
SELECT DISTINCT(emplid), 'N/A'
FROM ps_vc_plan_mem
WHERE vc_plan_id IN ('PNC-RS','PNC-SO','PNC-ESPP');
或者,您可以更改表,以便last_name可以为空。