Sql server 2008 创建存储过程以修改行(若存在),若不存在,则将新行插入表中
Sql server 2008 创建存储过程以修改行(若存在),若不存在,则将新行插入表中,sql-server-2008,tsql,stored-procedures,Sql Server 2008,Tsql,Stored Procedures,如何创建一个存储过程来根据Id和Name参数更新Std_课程的列,或者在Id和Name不存在的情况下插入新行 CREATE PROCEDURE dbo.proc_InsertOrUpdate @ID INT, @Name VARCHAR(50), @StdCourse INT AS IF EXISTS (SELECT * FROM dbo.YourTable WHERE ID = @ID AND Name = @Name) UPDATE dbo.YourTa
如何创建一个存储过程来根据Id和Name参数更新Std_课程的列,或者在Id和Name不存在的情况下插入新行
CREATE PROCEDURE dbo.proc_InsertOrUpdate
@ID INT, @Name VARCHAR(50), @StdCourse INT
AS
IF EXISTS (SELECT * FROM dbo.YourTable WHERE ID = @ID AND Name = @Name)
UPDATE dbo.YourTable
SET Std_course = @StdCourse
WHERE ID = @ID AND Name = @Name
ELSE
INSERT INTO dbo.YourTable(ID, Name, Std_Course)
VALUES(@ID, @Name, @StdCourse
CREATE PROCEDURE dbo.proc_InsertOrUpdate
@ID INT, @Name VARCHAR(50), @StdCourse INT
AS
MERGE dbo.YourTable AS t
USING (SELECT @ID, @Name, @StdCourse) AS Source(ID, NAME, Std_Course)
ON source.ID = t.ID AND source.Name = t.Name
WHEN MATCHED THEN
UPDATE SET Std_Course = @StdCourse
WHEN NOT MATCHED THEN
INSERT(ID, Name, Std_Course)
VALUES(source.ID, source.Name, source.Std_Course);
更新:因为您使用的是SQL Server 2008,所以还可以使用一个简单的MERGE
语句-直接“内联”或在存储过程内部。它看起来像这样:
CREATE PROCEDURE dbo.proc_InsertOrUpdate
@ID INT, @Name VARCHAR(50), @StdCourse INT
AS
IF EXISTS (SELECT * FROM dbo.YourTable WHERE ID = @ID AND Name = @Name)
UPDATE dbo.YourTable
SET Std_course = @StdCourse
WHERE ID = @ID AND Name = @Name
ELSE
INSERT INTO dbo.YourTable(ID, Name, Std_Course)
VALUES(@ID, @Name, @StdCourse
CREATE PROCEDURE dbo.proc_InsertOrUpdate
@ID INT, @Name VARCHAR(50), @StdCourse INT
AS
MERGE dbo.YourTable AS t
USING (SELECT @ID, @Name, @StdCourse) AS Source(ID, NAME, Std_Course)
ON source.ID = t.ID AND source.Name = t.Name
WHEN MATCHED THEN
UPDATE SET Std_Course = @StdCourse
WHEN NOT MATCHED THEN
INSERT(ID, Name, Std_Course)
VALUES(source.ID, source.Name, source.Std_Course);
不需要存储过程,只需使用
MERGE
@a\u horse\u和\u No\u名称:如果他在SQL Server 2008或更高版本上MERGE
在2000年或2005年都不存在……@marc_s:如果有人没有提到这个版本,我认为它是当前版本。是的,它是SQL Server 2008