更新并插入 oracle PL/SQL 以及 if else 条件
Update and insert in oracle PL/SQL along with if else condition
请通过以下代码片段查找:
BEGIN
IF (in_config1 IS NOT NULL OR in_config1 !='') THEN
UPDATE question_table
SET comment = in_config1
WHERE id= id
AND questionid = 1;
ELSE
INSERT INTO question_table(
tid
,questionid
,comments)
VALUES( id
, 1
, in_config1);
END IF;
END;
我的要求是根据某些 condition.If 更新失败来更新 question_table,如果记录不存在,那么我需要在 else 块中添加插入语句。
在上面的代码更新中工作。但是插入语句没有得到 executed.Please 让我知道怎么了?
如果我理解你,你需要 upsert 语句,如果记录匹配某个值则更新,如果不匹配则插入。在这种情况下,可以为您服务的最佳选择是 MERGE 子句。它高效、灵活且可读。以下是一个通用脚本,可能需要根据您从何处获取值和您的表结构进行细微更改。
MERGE INTO question_table a
USING (SELECT id, your_key, in_config1 FROM DUAL) b
ON (a.id = b.id)
WHEN MATCHED THEN
UPDATE question_table
SET comment = in_config1
WHEN NOT MATCHED THEN
INSERT INTO question_table(
tid
,questionid
,comments)
VALUES( id
, 1
, in_config1);
你可以像这样使用 sql%notfound
BEGIN
IF (in_config1 IS NOT NULL OR in_config1 != '') THEN
UPDATE question_table
SET comment = in_config1
WHERE id = id
AND questionid = 1;
if sql%notfound then
INSERT INTO question_table (tid, questionid, comments) VALUES (id, 1, in_config1);
end if;
END IF;
exception
when others then
dbms_output.put_line(sqlerrm);
END;
请通过以下代码片段查找:
BEGIN
IF (in_config1 IS NOT NULL OR in_config1 !='') THEN
UPDATE question_table
SET comment = in_config1
WHERE id= id
AND questionid = 1;
ELSE
INSERT INTO question_table(
tid
,questionid
,comments)
VALUES( id
, 1
, in_config1);
END IF;
END;
我的要求是根据某些 condition.If 更新失败来更新 question_table,如果记录不存在,那么我需要在 else 块中添加插入语句。 在上面的代码更新中工作。但是插入语句没有得到 executed.Please 让我知道怎么了?
如果我理解你,你需要 upsert 语句,如果记录匹配某个值则更新,如果不匹配则插入。在这种情况下,可以为您服务的最佳选择是 MERGE 子句。它高效、灵活且可读。以下是一个通用脚本,可能需要根据您从何处获取值和您的表结构进行细微更改。
MERGE INTO question_table a
USING (SELECT id, your_key, in_config1 FROM DUAL) b
ON (a.id = b.id)
WHEN MATCHED THEN
UPDATE question_table
SET comment = in_config1
WHEN NOT MATCHED THEN
INSERT INTO question_table(
tid
,questionid
,comments)
VALUES( id
, 1
, in_config1);
你可以像这样使用 sql%notfound
BEGIN
IF (in_config1 IS NOT NULL OR in_config1 != '') THEN
UPDATE question_table
SET comment = in_config1
WHERE id = id
AND questionid = 1;
if sql%notfound then
INSERT INTO question_table (tid, questionid, comments) VALUES (id, 1, in_config1);
end if;
END IF;
exception
when others then
dbms_output.put_line(sqlerrm);
END;