merge into 的用法


已創建 1 行。
 
SQL> commit;
 
----不帶where子句
SQL>  merge into merge1
  2     using merge2
  3   on (merge1.id = merge2.id)
  4   when matched then
  5     update
  6    set merge1.name = merge2.name;
 
3 行已合並。
 
SQL> rollback;
 
回退已完成。
 
---帶where子句
SQL>   merge into merge1 a
  2    using merge2 b
  3   on (a.id = b.id)
  4   when matched then
  5    update
  6    set a.name = b.name
  7   where a.name <> b.name;
 
0 行已合並。
 
------如果要更新b表,這樣寫會出錯
SQL>    merge into merge1 a
  2     using merge2 b
  3    on (a.id = b.id)
  4    when matched then
  5     update
  6     set b.name = a.name;
   set b.name = a.name
       *
第 6 行出現錯誤:
ORA-00904: "B"."NAME": 標識符無效
----------------------------------------

;MERGE INTO Loanee p
USING ( SELECT * FROM @TApply AS nc) c on p.ApplicationID=c.ApplicationID
WHEN MATCHED THEN UPDATE set p.UpdateTime=getdate()
WHEN NOT MATCHED BY TARGET THEN INSERT
(
LoaneeNumber,LoaneeName,LoanDate,LockMatchRatio,SurplusMatchRatio,
MatchRatio,MatchAmount,LockAmount,LoaneeAmount,ExpectedYield,
LoanPeriod,CreditRating,FreeState,UpdateTime,AddTime,
DeleteState,IsFullState,FullTime,LoaneeType,ApplicationID,
CashAccountNo,ContractTime,RelaseRatio,MatchOrder,KsshDate,
LockState,CashAccountNo_Name,loaneeSource,Broker_CashAccount,Broker_CashAccountName,ApprovalTime)
VALUES(
c.LoaneeNumber,c.[LoaneeName],c.[LoanDate],0,1,
0,0,0,c.[LoaneeAmount],c.[ExpectedYield],
c.[LoanPeriod],c.[CreditRating],0,getdate(),getdate(),
0,0,null,0,c.[ApplicationID],
c.[CashAccountNo],c.[ContractTime],0,c.[MatchOrder],[KsshDate],
0,c.[CashAccountNo_Name],0,c.[Broker_CashAccount],c.[Broker_CashAccountName],c.ApprovalTime
);

以上例子的作用就是,向一個表中插入數據時,判斷是否存在,不存在則插入,存在則更新
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM