我正在为select设置存储过程,并且想要在执行Select之前更新数据库中一列的值。
这是我尝试过的方法,但是不起作用。
@roleID int
和@query varchar(240)
SELECT
EP.Equipe_Projet_Id AS PROJET_ID,
U.USR_ID,
CleRepartition = CASE
WHEN @RoleID = 1 AND @query IS NOT NULL
THEN 100
AND (UPDATE EQUIPE_PROJET SET CleRepartition = 100
WHERE EP.Equipe_Projet_Id = @PROJET_ID AND EP.Role_Id = 3)
ELSE NULL
END
FROM
[EQUIPE_PROJET] EP
期待数据库中列的更新并具有其价值
答案 0 :(得分:1)
我想在选择时更新数据库中列
CleRepartition
的值。
这在SELECT
查询中是不可能的。 SELECT
从数据库中检索数据。 UPDATE
修改数据。这是两个单独的语句,不能合并。
您正在通过存储过程进行这项工作。在存储过程中,您可以按任何顺序运行UPDATE
和SELECT
,因此您可以完成两项任务。如果您担心两个语句之间的数据库中的数据更改,可以将它们包装在事务中。
答案 1 :(得分:0)
存储过程可以进行更新,然后选择。
因此,我在开始时添加了更新查询,然后进行选择。
赞:
UPDATE EP
SET CleRepartition = CASE
WHEN @RoleID = 1 AND @query IS NOT NULL
THEN 100
AND (UPDATE EQUIPE_PROJET
SET CleRepartition = 100
WHERE EP.Equipe_Projet_Id = @PROJET_ID
AND EP.Role_Id = 3)
ELSE NULL
END
FROM [EQUIPE_PROJET] EP
SELECT
EP.Equipe_Projet_Id AS PROJET_ID,
U.USR_ID,
CleRepartition
FROM
[EQUIPE_PROJET] EP
我希望这会对某人有所帮助。