OutPut是一个输出参数类型,首先我们要明白OutPut类型的参数与Return值不一样。我们将存储过程中的某一个或多个参数提定为
OutPut类型,然后在存储过程内部更新这些参数,再在存储过程外部获取这些参数值就可以了。这有点类似于C#中的ref,out类型的参数。
下面我们分别以在sql中与C#中获取OutPut输出参数值各举一个简单的例子。
一,
在sql中获取存储过程中OutPut输出参数值1,先创建一个测试的存储过程:
create procedure sp_test
@ID int output,
@Name varchar(50) output
as
set @ID=1000
set @Name='.net学习网'
2,然后调用该存储过程
declare @ID int
declare @Name varchar(50)
execute sp_test @ID output,@Name output
select @ID as ID号,@Name as 姓名
执行的结果是:
ID号 姓名
1000 .net学习网
需要注意的是,在执行存储过程的时候,一定要为参数@ID与@Name指明output类型,要不然是得不到存储过程的输出值的。
二,
在C#中获取存储过程中OutPut输出参数值还是利用上面创建的sp_test,现在我们在C#中执行上面的sp_test,然后取回@ID和@Name的值。
public static void PagiNation()
{
SqlParameter[] parameters = new SqlParameter[2];
parameters[0] = new SqlParameter("@ID", SqlDbType.Int, 4);
parameters[0].Direction = ParameterDirection.Output;
parameters[1] = new SqlParameter("@Name", SqlDbType.VarChar, 50);
parameters[1].Direction = ParameterDirection.Output;
/*
执行sp_test,代码略
执行完成后parameters[0].Value就等于1000,parameters[1].Value就等于".net学习网"了。
*/
}
从上面的代码中可以看到,我们只需在传参前将对应参数的类型设置为ParameterDirection.Output,执行完sql后,再取回对应参数的value就可以了。