gpt4 book ai didi

Oracle 通过过程插入或更新行

转载 作者:行者123 更新时间:2023-12-02 08:45:36 25 4
gpt4 key购买 nike

我有一张 table

CREATE TABLE STUDENT
(
ID INTEGER PRIMARY KEY,
FIRSTNAME VARCHAR2(1024 CHAR),
LASTNAME VARCHAR2(1024 CHAR),
MODIFIEDDATE DATE DEFAULT sysdate
)

我正在插入一行数据

insert into STUDENT (ID, FIRSTNAME, LASTNAME, MODIFIEDDATE)  values (1,'Scott', 'Tiger', sysdate);

当我必须插入一条数据记录时,我需要编写一个过程或函数来执行以下操作:

  1. 如果没有相同 ID 的记录,则插入该行。
  2. 如果有相同 ID 和数据匹配的记录,则什么也不做。
  3. 如果有相同 ID 的记录但数据不匹配,则更新数据。

我是甲骨文新手。从 java 端,可以通过 id 选择记录然后更新该记录,但这会进行 2 次数据库调用。只是为了避免我正在尝试使用过程更新表格。如果可以在单个数据库调用中完成相同的操作,请提及。

最佳答案

对于单条SQL语句的解决方案,可以尝试使用MERGE声明,如本答案中所述 https://stackoverflow.com/a/237328/176569

例如

create or replace procedure insert_or_update_student(
p_id number, p_firstname varchar2, p_lastname varchar2
) as
begin
merge into student st using dual on (id = p_id)
when not matched then insert (id, firstname, lastname)
values (p_id, p_firstname, p_lastname)
when matched then update set
firstname = p_firstname, lastname = p_lastname, modifiedate = SYSDATE
end insert_or_update_student;

关于Oracle 通过过程插入或更新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12705752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com