我来自 Microsoft SQL 环境。我有两个表tak_ne
,如果值不存在,我的要求是从totak_beb
插入值,如果存在则更新。所以我做了一个合并语句,如下所示。面临的是非常天 50000 计数正在增加序列号。Oracle 是稳定的数据库,我不知道他们为什么这样做。所以我创建了一个函数并阻止增加序列号。我的问题是,这是一个正确的方法通过创建函数。以下是我所做的tak_beb
tak_ne
merge into tak_ne a using tak_beb b ON (a.NAME=b.NAME)
When matched then
Update
Set a.AC_NO = b.AC_NO
a.LOCATION = b.LOCATION
a.MODEL = b.MODEL
When not matched then
insert
(
sl_no,
AC_NO,
LOCATION
MODEL
)
Values
(
s_slno_nextval
b.AC_NO
b.LOCATION
b.MODEL
)
然后我创建了一个函数
CREATE OR REPLACE FUNCTION s_slno_nextval
RETURN NUMBER
AS
v_nextval NUMBER;
BEGIN
SELECT s_emp.nextval
INTO v_nextval
FROM dual;
RETURN v_nextval;
END;