首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

存储过程返回值的一个小疑点

2012-01-13 
存储过程返回值的一个小问题//存储过程alterproctest@tintoutputasset@t6godropproctest//调用代码SqlCom

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

热点排行