我需要重新编写以下Oracle 10g查询才能在SQL Server 2008中工作
这是一个更新查询,其中一些字段是从 a 中检索的,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 ...
与 Oracle 兼容的结构(查询由 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
)如果没有获取任何记录,它会返回错误。
提前致谢!