过程或函数“biinsertcustomer”需要参数“@custid”,但未提供
本文关键字:@custid 函数 biinsertcustomer 过程 参数 | 更新日期: 2023-09-27 18:33:24
@custid
用于返回值。
过程或函数"biinsertcustomer"需要参数"@custid",但未提供。
我在不使用@custid
和scope_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();
在调用过程之前,必须添加输出参数。然后你可以把参数值拿出来:
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();