更新クエリはSQL Serverで実行されますが、Oracleでは実行されません
-
28-09-2019 - |
質問
SQL ServerとOracleの両方で実行するには、この更新クエリが必要です。それが重要な場合、私たちのOracleバージョンは10.2です。 Oracleでクエリを実行すると、「エラー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
)
解決
更新...構文からの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
)
他のヒント
共同関連サブクエリの構文は、Oracleで少し異なります。
UPDATE dbo.tableUpdate
SET fieldA = (select 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)
Oracleのクエリを完全に書き直す必要があります。 Oracle 10.2で機能しないもの:
from
句update
文(これのためにサブセレクトを書く必要があります)dbo
スキーマ、実際にユーザーという名前のユーザーがいない限りdbo
テーブルを所有するOracleであなたは更新しようとしています
所属していません StackOverflow