【发布时间】:2016-01-02 05:12:39
【问题描述】:
我来自 Microsoft SQL 环境。我有两个表 tak_ne 和 tak_beb,我的要求是如果值不存在,则插入从 tak_beb 到 tak_ne 的值,如果存在则更新。所以我做了一个如下所示的合并语句。但是我现在面临的问题是非常天 50000 计数正在增加序列号。Oracle 是稳定的数据库,我不知道他们为什么这样做。所以我创建了一个函数并防止增加序列号。我的问题是,创建函数是否正确。以下是我所做的
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;
【问题讨论】:
-
Oracle 12 作为标识列