ORACLE关于merge into用法!

问题描述:

ORACLE关于merge into用法!
MERGE INTO MSA2008BS.ATYW_ZS_GCZL A
USING (SELECT * fROM LOADTMP.MSA2008BS_ATYW_ZS_GCZL WHERE ETL_F IN ('I','D','A')) B
ON (A.ATZSCZLOID=B.ATZSCZLOID)
WHEN MATCHED AND B.SHIPFID ='' THEN UPDATE SET
A.SHIPFID =B.SHIPFID ,
A.GCZLDJZHM=B.GCZLDJZHM ,
A.CBDJH =B.CBDJH
WHEN NOT MATCHED THEN
INSERT(A.ATZSCZLOID,A.SHIPFID,A.GCZLDJZHM,A.CBDJH,A.CBCZR)
VALUES(B.ATZSCZLOID,B.SHIPFID,B.GCZLDJZHM,B.CBDJH,B.CBCZR)
;
中因为在WHEN MATCHED后加入了AND条件即:AND B.SHIPFID =''
之后报错,是不是oracle不支持WHEN MATCHED后跟条件呢?
1个回答 分类:综合 2014-10-29

问题解答:

我来补答
在when matched then 和 when not matched then 后面只能加insert() values 或者 update set .,. ,不能附加条件,而且then 后面的语句不能使用其他语句. 另外注意到,B的域只在using里面的查询有用吧 ,如果你要使用 也得是 在Using () M 用m吧
 
 
展开全文阅读
剩余:2000
上一页:求形状的题不会