oracle中的等效合并输出

时间:2017-06-09 20:37:00

标签: sql sql-server oracle plsql

我正在学习oracle sql和pl / sql,我想知道是否有等效的条款' merge = output'在Oracle中或以简单有效的方式获得相同的结果。

链接到sql server的良好explon'合并,输出' stetment。 link

for label in soup1.find_all('label', class_='radio'):
    t = label.find('img', class_='readradio')
    if t and '/Style/img/checkedradio.png' in t.get('src'):
        content = label.find('span', class_='title')
        temp_list.append(content.text)

返回(例如'查询')

--sql server merge
    MERGE  #c_new AS trg
     USING #c_base AS src
        ON trg.Num_id = src.Num_id
    WHEN MATCHED )
    THEN
       UPDATE SET
          trg.Name = src.Name
         ,trg.Name_type = src.Name_type
    WHEN NOT MATCHED BY trg
    THEN
       INSERT (Num_id, Name, Name_type)
       VALUES (Num_id, src.Name, src.Name_type)
    WHEN NOT MATCHED BY src THEN DELETE
    ------------output clause from here---------------
     OUTPUT
       $ACTION,
       inserted.Name   NewName,
       deleted.Name    PrevName,
       inserted.Name_type  NewName_type,
       deleted.Name_type  PrevName_type

是等效条款' merge = output'在Oracle中或简单有效的方式获得相同的结果

1 个答案:

答案 0 :(得分:0)

我所知道的最接近的Oracle等价物是RETURNING子句,但MERGE语句显然不支持:

  

“是的,合并不支持返回[...]如果你想要这个   功能,提交增强请求“

https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:9528727800346317168

目前的doco确实能够记录错误,但这显然不是你(或我)所追求的: - (

  

error_logging_clause允许您捕获DML错误和日志   受影响的行的列值并将其保存在错误日志记录中   表

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/MERGE.html#GUID-5692CCB7-24D9-4C0E-81A7-A22436DC968F