存储过程返回值的一个小问题
//存储过程
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);