更新时的Sql Server存储过程案例

更新时的Sql Server存储过程案例,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我不熟悉存储过程 ALTER PROCEDURE [dbo].[SP_MY_STORE_PROCEDURED] ( @ID INT, @NAME VARCHAR(50) ) AS BEGIN UPDATE MY_TABLE SET WHEN (( ID ) > 1) THEN ID=@ID , NAME = @NAME END 我尝试使用when-then更新我的ID和名称 如果Id大于1,我想更新,否则不更新。 如何使用ms sql实现此功能 任何帮助

我不熟悉存储过程

ALTER PROCEDURE [dbo].[SP_MY_STORE_PROCEDURED]
(
@ID INT,
@NAME VARCHAR(50)
)
AS
BEGIN
    UPDATE MY_TABLE
    SET    

WHEN
(( ID ) > 1)
THEN
ID=@ID 
,

NAME = @NAME 

END
我尝试使用when-then更新我的ID
名称

如果Id大于1,我想更新,否则不更新。

如何使用ms sql实现此功能

任何帮助都将不胜感激


谢谢。

我想这就是你想要的:

ALTER PROCEDURE [dbo].[SP_MY_STORE_PROCEDURED]
(
@ID INT,
@NAME VARCHAR(50)
)
AS
BEGIN
    UPDATE MY_TABLE
    SET NAME = @NAME
    WHERE ID = @ID
END

您不需要检查ID>1,因为您正在检查与@ID的相等性。如果您想确保在@ID时不会发生这种情况,我不确定您正试图更新什么。您正在尝试更改id为@id的用户记录上的名称吗

ALTER PROCEDURE [dbo].[SP_MY_STORE_PROCEDURED]
(
@ID INT,
@NAME VARCHAR(50)
)
AS
BEGIN

    UPDATE MY_TABLE
    SET Name = @Name
    WHERE Id = @ID and @ID > 1

END
这应该可以做到

ALTER PROCEDURE [dbo].[SP_MY_STORED_PROCEDURE] ( @ID INT, @NAME VARCHAR(50) )
AS
BEGIN
    IF @ID > 1
        UPDATE MY_TABLE
        SET Name = @Name
        WHERE Id = @ID
END

如果ID>=1,则更新,否则不更新。我的问题对吗?嗯,我觉得太多了。您正在使用@ID检查相等性。在所有SQL方言中,您可以在更新中使用WHERE子句。是否确实要将ID大于1的所有记录设置为相同的值?只有在输入两个参数OldID和NewID时才有意义更改ID,这样您才能找到具有OldID的记录,并将其更改为新ID和名称。也许你实际上是想插入一条新记录?
ALTER PROCEDURE [dbo].[SP_MY_STORED_PROCEDURE] ( @ID INT, @NAME VARCHAR(50) )
AS
BEGIN
    IF @ID > 1
        UPDATE MY_TABLE
        SET Name = @Name
        WHERE Id = @ID
END