【发布时间】:2011-01-21 23:38:37
【问题描述】:
是否有任何 Oracle 函数表明记录的存在,或任何其他有用的技术来实现这一点?
编辑:使用我所做的 MERGE 语句:
MERGE
INTO lims_min.mytab src
USING lims_min.mytab tgt
ON ( src.col1 = tgt.col1
AND tgt.col1 = p_val1
AND src.col2 = tgt.col2
AND tgt.col2 = p_val2
)
WHEN MATCHED
THEN
UPDATE
SET tgt.col3=p_val3,
tgt.col4=p_val4
WHEN NOT MATCHED
THEN
INSERT (col1, col2, col3, col4)
VALUES (val1, val2, val2, val4);
我收到错误消息说 col3 是无效标识符。没有拼写错误,它是现有的列。p_val1、p_val2、p_val3 和 p_val4 是传递给存储过程的字符串参数。我认为问题可能在于这些参数,也许它们应该放在 WHERE 语句中? 有什么想法吗?
【问题讨论】:
-
Oracle 10,我得到“PL/SQL: ORA-00904: "P"."COL3": invalid identifier"
-
我认为您需要:“MERGE INTO tgt”(不是 src)- 切换它们;而且我认为您不需要加入您的 src 和 tgt 表 - 只需指定:ON (src.col1 = p_val1 and src.col2 = p_val2)
-
哇,好一个杰拉特!谢谢你。相当偷偷摸摸
标签: sql oracle oracle10g insert-update ora-00904