我原来的更新语句在Sybase中仍然很好(见下文),但我们正在迁移到Oracle 11g,我必须将此更新语句转换为Oracle Update。 我尝试了很多版本并不断收到错误,我想我没有弄明白Oracle Update语句是如何工作的。谁能帮忙?什么是Oracle 11g中的正确更新声明
我原来的好更新语句(在Sybase):
UPDATE Valid
SET A.status = 'X',
A.reason = 'Missing'
FROM Valid A, Valid B
WHERE A.id_number = B.id_number
AND A.session_id = 69
AND A.userid = 'BS'
AND A.status = 'A'
AND isnull(B.street1, ' ') = ' '
下面是我的Oracle版本无法正常工作,无论我做了什么:
MERGE
INTO um_valid Target
USING (select * from um_valid) SOURCE
ON (t1.id_number = t2.id_number)
WHEN MATCHED THEN
UPDATE
SET status = 'X',
reason = 'Missing (street 1)'
WHERE Target.session_id = 69
AND Target.userid = 'BS'
AND Target.status = 'A'
AND NVL(SOURCE.street1, ' ') = ' ')
我得到的错误: ORA-00933: SQL command not properly ended
我尝试过了,现在我有一个diferent错误:ORA-00904: “源”, “STREET1”:无效的标识符。列名是STREET1 – user2127860 2013-03-27 19:06:12
您确定它是STREET1吗?做一个描述。它是以大写显示吗?如果不是,请将案例与双引号环绕起来。例如:“street1”你可以从um_valid选择STREET1吗? – redcayuga 2013-03-27 20:26:03