0
重寫我需要重寫以下Oracle 10g中查詢在SQL Server 2008中複雜UPDATE查詢,從Oracle 10g中
工作這是一個更新查詢,在一些領域中檢索從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 ...)
請注意,我需要與甲骨文使用UPDATE SET ... WHERE EXIST ...
結構兼容性(查詢由QueryBuilder的類自動生成每個特定DBMS)。
我也不能寫:
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 "Cannot update to NULL"因爲)它,如果SELECT
不取任何記錄將返回一個錯誤。
在此先感謝!
因此,沒有別的辦法嗎? – Teejay
@Teejay:這是否適合你? –
你的編輯符合我的需求更多...但我想知道'UPDATE SET FLD1 = VAL1,FLD2 = VAL2'與'UPDATE SET(FLD1,FLD2)=(VAL1,VAL2)'是一樣的。它應該,teoretically ... – Teejay