Rya*_*yer 2 sql sql-server oracle ora-00933
我需要此更新查询在SQL Server和Oracle上运行.如果重要的话,我们的Oracle版本是10.2.当我在Oracle中运行查询时,我得到"ERROR ORA-00933:SQL命令未正确结束".为了让它在Oracle中运行,我需要做什么?
UPDATE dbo.tableUpdate
SET fieldA = tt.fieldB
FROM dbo.tableTranslate tt
WHERE
tt.fieldC = dbo.tableUpdate.fieldC
AND
tt.fieldD = dbo.tableUpdate.fieldA
AND
1 = (
SELECT COUNT(tblTrans.fieldD)
FROM dbo.tableTranslate tblTrans
WHERE
tblTrans.fieldC = dbo.tableUpdate.fieldC
AND
tblTrans.fieldD = dbo.tableUpdate.fieldA
)
Run Code Online (Sandbox Code Playgroud)
UPDATE ... FROM语法对Oracle无效.您将需要使用子查询,如下所示:
UPDATE dbo.tableUpdate t
SET t.fieldA = (SELECT tt.fieldB
FROM dbo.tableTranslate tt
WHERE tt.fieldC = t.fieldC
AND tt.fieldD = t.fieldA
)
WHERE 1 = (
SELECT COUNT(tblTrans.fieldD)
FROM dbo.tableTranslate tblTrans
WHERE tblTrans.fieldC = t.fieldC
AND tblTrans.fieldD = t.fieldA
)
Run Code Online (Sandbox Code Playgroud)