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