110,536
社区成员
发帖
与我相关
我的任务
分享
alter procedure [dbo].[proc_test]
@in int,
@out int output
AS
select @out = 2*@in;
return @out
GO
调用测试如下
declare @out int;
set @out = 10;
exec [proc_test] 10,@out;
//connection
SqlConnection conn = new SqlConnection();
conn.ConnectionString = @"Data Source=xxx-pc;User ID=sa;Password=1234;Initial Catalog=test;";
//commond and parameter
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = conn;
cmd.Parameters.Add(new SqlParameter("@in", SqlDbType.Int));
cmd.Parameters["@in"].Value = 10;
cmd.Parameters.Add(new SqlParameter("@out", SqlDbType.Int));
cmd.Parameters["@out"].Value = 10;
cmd.Parameters["@out"].Direction = ParameterDirection.Output;
cmd.CommandText = "[proc_test]";
conn.Open();
cmd.ExecuteNonQuery();
int result = (int)cmd.Parameters["@out"].Value;
Console.WriteLine("the return value of proc_test is :" + result.ToString()+".");
需要注意的是:output参数传进去的时候也是要赋值的,类似与c#函数的ref参数;之所以报那个错误是因为你的commond sql里面写的不对,不应该再声明变量,请参见我的例子.如有问题请发送邮件至:fuhui_jurassic@163.com