[英]Update using stored procedure in ASP.NET
我在SQL Server中创建了一个存储过程,如果记录存在,它将更新表,否则它将在表中插入记录
这是存储过程的代码:
CREATE PROCEDURE [dbo].[insert_update]
(@sender VARCHAR(50),
@receiver VARCHAR(50),
@no INT,
@mas INT,
@sha INT,
@not INT,
@ever INT,
@love INT,
@tele INT)
AS
BEGIN
IF EXISTS (SELECT 1
FROM links
WHERE sender = @sender
AND receiver = @receiver
AND no = @no
AND mas = @mas
AND sha = @sha
AND not = @not
AND ever = @ever
AND love = @love
AND tele = @tele)
BEGIN
UPDATE links
SET sender = ISNULL(@sender, sender),
receiver = ISNULL(@receiver, receiver),
no = ISNULL(@no, no),
mas = ISNULL(@mas, mas),
sha = ISNULL(@sha, sha),
not = ISNULL(@not, not),
ever = ISNULL(@ever, ever),
love = ISNULL(@love, love),
tele = ISNULL(@tele, tele)
WHERE
sender = @sender
AND receiver = @receiver
END
ELSE
BEGIN
INSERT INTO links
VALUES (@sender, @receiver, @no, @mas, @sha, @not, @ever, @love, @tele)
END
END
现在,如果记录已经存在,我只想更新几列,所以这是后面的代码:
sql.Open();
SqlCommand Cmd = new SqlCommand("insert_update", sql);
Cmd.CommandType = CommandType.StoredProcedure;
Cmd.Parameters.AddWithValue("@sender", Request.QueryString["sender"]);
Cmd.Parameters.AddWithValue("@receiver", Request.QueryString["reciever"]);
Cmd.Parameters.AddWithValue("@no", Request.QueryString["one".ToString()]);
Cmd.Parameters.AddWithValue("@mas", Request.QueryString["two".ToString()]);
Cmd.Parameters.AddWithValue("@sha", Request.QueryString["three".ToString()]);
Cmd.Parameters.AddWithValue("@not", Request.QueryString["four".ToString()]);
Cmd.Parameters.AddWithValue("@ever", Request.QueryString["five".ToString()]);
Cmd.Parameters.AddWithValue("@love", Request.QueryString["six".ToString()]);
Cmd.Parameters.AddWithValue("@tele", Request.QueryString["seven".ToString()]);
Cmd.ExecuteNonQuery();
sql.Close();
每当我尝试更新时,都会出现错误
过程或函数“ insert_update”期望未提供参数“ @mas”。
那么如何只更新几列呢?
您必须更改stored procedure
定义,以便过程不应期望每个参数的值。 我们可以在stored procedure
定义中为每个参数指定默认值,如下所示-
create PROCEDURE [dbo].[insert_update]
(
@sender varchar=null,
@reciever varchar=null,
@no int=null,
@mas int=null,
@sha int=null,
@not int=null,
@ever int=null,
@love int=null,
@tele int=null
)......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.