如果存在更新记录;否则插入Oracle
-
16-10-2019 - |
题
是否有任何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是字符串参数,已传递给存储过程。我认为问题可能在于这些参数,也许应该将它们放置在一个陈述中?有任何想法吗?
解决方案
你在寻找 merge
在Oracle。
MERGE
INTO target_table tgt
USING source_table src
ON ( src.object_id = tgt.object_id ) //The key to check if the record exists
WHEN MATCHED // if exists
THEN
UPDATE
SET tgt.object_name = src.object_name //update it
, tgt.object_type = src.object_type
WHEN NOT MATCHED // if not exists
THEN
INSERT ( tgt.object_id //then insert
, tgt.object_name
, tgt.object_type )
VALUES ( src.object_id
, src.object_name
, src.object_type );
其他提示
不隶属于 StackOverflow