SQL Server 2008で機能するには、次のOracle10gクエリを書き直す必要があります。
これは更新クエリであり、一部のフィールドはから取得され、SELECT
一部は(コードから)指定されます。
UPDATE "BMAN_SQL"."CELLS_GLIST"
SET ("GLIST_ID", "GLIST_VALUE_ID") = (
SELECT "GLIST_ID", "GLIST_VAL_ID"
FROM "BMAN_SQL"."GLISTS_VAL_UOR"
WHERE ("UOR_ID"=3)
AND ("GLIST_CODE"='X')
),
"SESSION_ID" = 1553245736,
"USER_ID" = 13
WHERE EXISTS ( SELECT * FROM ... )
Oracleとの互換性のために構造を使用する必要があることに注意してくださいUPDATE SET ... WHERE EXIST ...
(クエリは特定のDBMSごとにQueryBuilderクラスによって自動的に構築されます)。
私も書くことができません:
UPDATE "BMAN_SQL"."CELLS_GLIST"
SET ("GLIST_ID", "GLIST_VALUE_ID", "SESSION_ID", "USER_ID") = (
SELECT "GLIST_ID", "GLIST_VAL_ID", 1553245736, 13
FROM "BMAN_SQL"."GLISTS_VAL_UOR"
WHERE ("UOR_ID"=3)
AND ("GLIST_CODE"='X')
)
WHERE EXISTS ( SELECT * FROM ... )
なぜなら(この古いスレッドのように、Oracleは「NULLに更新できません」SELECT
)、がレコードをフェッチしない場合、エラーを返します。
前もって感謝します!