2016-08-24 57 views
0

我试图执行一个查询合并在oracle中显示错误

merge into RAWREQUEST 
using (select APP_TXN_SEQ_ID,APP_TXN_ID from SEQ_APP_TIN_MAP) 
on (RAWREQUEST.app_txn_id=SEQ_APP_TIN_MAP.app_txn_id) 
WHEN MATCHED THEN UPDATE set RAWREQUEST.app_txn_id = SEQ_APP_TIN_MAP.APP_TXN_SEQ_ID 

它显示

SQL Error: ORA-00905: missing keyword 
00905. 00000 - "missing keyword" 
+0

你张贴什么得到ORA-00904,未ORA-00905。您也无法更新您在'on'条件下使用的列(ORA-38104,尝试设置'RAWREQUEST.app_txn_id')。我想你在这里需要一个相关的更新。 –

回答

1

两种解决方案成为可能:

给内联表的别名

merge into RAWREQUEST 
using (select APP_TXN_SEQ_ID,APP_TXN_ID from SEQ_APP_TIN_MAP) t 
on (RAWREQUEST.app_txn_id = t.app_txn_id) 
WHEN MATCHED THEN UPDATE set RAWREQUEST.app_txn_id = t.APP_TXN_SEQ_ID 

使用表SEQ_APP_TIN_MAP,而不是直接内嵌表

merge into RAWREQUEST 
using SEQ_APP_TIN_MAP 
on (RAWREQUEST.app_txn_id=SEQ_APP_TIN_MAP.app_txn_id) 
WHEN MATCHED THEN UPDATE set RAWREQUEST.app_txn_id = SEQ_APP_TIN_MAP.APP_TXN_SEQ_ID 
+0

仍然是相同的错误 – user1590310

+0

看起来像有效的SQL。你可以提供表结构或[SQL小提琴](http://sqlfiddle.com/)? –