日期:2014-05-20  浏览次数:21049 次

存储过程返回值的一个小问题
//存储过程
alter   proc   test
@t   int   output
as
set   @t=6
go
drop   proc   test

//调用代码
SqlCommand   cmdPro   =   new   SqlCommand( "test ",   con);
cmdPro.CommandType   =   CommandType.StoredProcedure;

SqlParameter   sqlpar;
sqlpar   =   cmdPro.Parameters.Add( "@i ",   SqlDbType.Int);
sqlpar.Direction   =   ParameterDirection.ReturnValue;
//这句错误,未将对象引用设置到对象的实例
MessageBox.Show(cmdPro.Parameters[ "@i "].Value.ToString());
关键是取不到返回的值,真是急呀,


------解决方案--------------------
修改一:

sqlpar.Direction = ParameterDirection.ReturnValue;
改为
sqlpar.Direction = ParameterDirection.Output;

修改二:
需要在执行完毕后再去访问输出参数的值。
------解决方案--------------------
try..

SqlParameter sqlpar;
sqlpar = cmdPro.Parameters.Add( "@i ", SqlDbType.Int);
sqlpar.Direction = ParameterDirection.Output;
cmdPro.Parameters.Add(sqlpar);//将参数添加到命令对象

------解决方案--------------------
sorry..

SqlParameter sqlpar = new SqlParameter( "@i ", SqlDbType.Int);
sqlpar.Direction = ParameterDirection.Output;
cmdPro.Parameters.Add(sqlpar);//将参数添加到命令对象

------解决方案--------------------
修改存储过程也可:
create proc test
@t int output
as
set @t=6
return 6
go

------解决方案--------------------
帮顶了 !
------解决方案--------------------
TO:这样不已经添加了吗?


是的,刚开始看错了..

现在问题解决了吗?
------解决方案--------------------
还是说点:

为什么执行完了 就删除了呢

那样会找到存储过程么...
------解决方案--------------------
SqlParameter sqlpar;
sqlpar = cmdPro.Parameters.Add( "@i ", SqlDbType.Int);
sqlpar.Direction = ParameterDirection.Output;
cmdPro.Parameters.Add(sqlpar);