过程或函数“biinsertcustomer”需要参数“@custid”,但未提供

本文关键字:@custid 函数 biinsertcustomer 过程 参数 | 更新日期: 2023-09-27 18:33:24

@custid用于

返回值。

过程或函数"biinsertcustomer"需要参数"@custid",但未提供。

我在不使用@custidscope_identity的情况下尝试了这段代码,它可以工作。

程序:

ALTER PROCEDURE dbo.biinsertcustomer
@cust_name varchar(50),
@contactname varchar(50),
@address nvarchar(max), 
@status varchar(50),
@custid int output  
AS
if(@status='insert')
Begin   
if not exists ( select cust_name from tblcustomer where cust_name=@cust_name)
insert into tblcustomer(cust_name,contactperson,address) values(@cust_name,@contactname,@address)
set @custid=scope_identity()
RETURN @custid
End

执行:

con.open();
cmd = new SqlCommand("biinsertcustomer", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@cust_name", txtcustname.Text);
cmd.Parameters.AddWithValue("@contactname",txtcontactname.Text);
cmd.Parameters.AddWithValue("@address", txtaddress.Text);
cmd.Parameters.AddWithValue("@status", "insert");
cmd.ExecuteNonQuery();
custid =Convert.ToInt32( cmd.Parameters[@custid].Value.ToString());
con.close();

过程或函数“biinsertcustomer”需要参数“@custid”,但未提供

在调用过程之前,必须添加输出参数。然后你可以把参数值拿出来:

SqlParameter customerParameter = cmd.CreateParameter();
customerParameter.ParameterName = "@custid";
customerParameter.Direction = ParameterDirection.Output;
customerParameter.Size = 100;
cmd.Parameters.Add(customerParameter);
cmd.ExecuteNonQuery();
string custid = customerParameter.Value.ToString();