小编Xma*_*ntX的帖子

Oracle Merge 删除子句其中数据在目标中但不在源中

尝试从目标表中删除源表中不存在的记录。

对象类型

CREATE OR REPLACE type dbo.P_REC AS OBJECT
(
    ATTR1    VARCHAR2(64 BYTE),
    ATTR2    VARCHAR2(128 BYTE),
    ATTR3    VARCHAR2(128 BYTE),
    ATTR4    VARCHAR2(128 BYTE)
);
Run Code Online (Sandbox Code Playgroud)

收藏类型

CREATE OR REPLACE type dbo.P_REC_LIST is table of P_REC;
Run Code Online (Sandbox Code Playgroud)

存储过程

PROCEDURE testProc(tmpPList IN P_REC_LIST, resultCursor out sys_refcursor)

IF tmpPList.count > 0 THEN
MERGE INTO [targetTable] TT
        USING (SELECT abc.Attr1 abc.Attr2 FROM TABLE(tmpPList) abc) TMP
        ON (TT.Attr1 = TMP.Attr1)
      WHEN MATCHED THEN
        UPDATE SET TT.Attr2 = TMP.Attr2 
        DELETE WHERE TT.Attr1 NOT IN (SELECT Attr1 FROM TABLE(tmpPList))
      WHEN …
Run Code Online (Sandbox Code Playgroud)

sql oracle plsql oracle12c

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

oracle ×1

oracle12c ×1

plsql ×1

sql ×1