即使提供了参数,SQL Server存储过程也需要参数
本文关键字:参数 Server 存储过程 SQL | 更新日期: 2023-09-27 18:28:54
我使用的是MS Visual Studio 2010和SQL Server 2008 R2。
在C#应用程序中,我试图使用一个存储过程,但遇到了一个奇怪的错误。
以下是表格定义:
create table bed_allotment
(
bill_id bigint,
bed_category varchar(50),
for_days int
)
存储过程:
create procedure AddBed
(
@bill_id bigint,
@bed_category varchar(50),
@for_days int
)
as
begin
insert into bed_allotment
values (@bill_id, @bed_category, @for_days)
end
点击按钮编码:
private void button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(conString);
SqlCommand AddBedCommand = new SqlCommand("AddBed", con);
AddBedCommand.Parameters.AddWithValue("@bill_id", 1330);
AddBedCommand.Parameters.AddWithValue("@bed_category", "ICCU");
AddBedCommand.Parameters.AddWithValue("@for_days", 6);
con.Open();
AddBedCommand.ExecuteNonQuery();
con.Close();
}
当我执行此操作时,会发生错误。上面写着
SQL过程需要未提供的参数"@bill_id"
怎么了?任何建议都会很有帮助。非常感谢。
将AddBedCommand.CommandType
更改为CommandType.StoredProcedure
,使请求成为RPC请求。
试试这个
AddBedCommand.CommandType = CommandType.StoredProcedure;
AddBedCommand.Parameters.Add("@bill_id", SqlDbType.Int).Value = 1330;
AddBedCommand.Parameters.Add("@bed_category", SqlDbType.VarChar).Value = "ICCU";
AddBedCommand.Parameters.Add("@for_days", SqlDbType.Int).Value = 6;