首页 新闻 会员 周边

c#中 调用带输出参数output的存储过程,如何获得该返回值?

0
悬赏园豆:10 [已解决问题] 解决于 2015-07-08 13:35

我的存储过程标题如下:
ALTER proc [dbo].[brpbomweight] @cinvcode varchar(50), @dec3 decimal(18,6) output
as

我用以下语法可以输出值为 0.005623

declare @dec3 decimal(18,6) exec brpbomweight '1201SPE13601', @dec3 output
print @dec3

我用以下C#代码,输出@dec3永远都是 0,不知道是什么原因,高人请指教

 

string strConn = command.Class1.cn;

 

            SqlConnection conn = new SqlConnection(strConn);

 

            conn.Open();

 

            SqlCommand cmd = new SqlCommand("brpbomweight", conn);

 

            cmd.CommandType = CommandType.StoredProcedure;

 

            //输入参数

 

            SqlParameter param1 = new SqlParameter("@cinvcode", SqlDbType.VarChar, 50);

 

            param1.Value = "1201SPE13601";                             cmd.Parameters.Add(param1);        

 

            //输出参数

 

            SqlParameter param = new SqlParameter("@dec3", SqlDbType.Decimal);

 

            param.Direction = ParameterDirection.Output;

 

            cmd.Parameters.Add(param);             //执行存储过程

 

            cmd.ExecuteNonQuery();

 

            conn.Close();

 

            //输出值             MessageBox.Show(param.Value.ToString());

zhengyingcan的主页 zhengyingcan | 初学一级 | 园豆:12
提问于:2014-05-10 19:47
< >
分享
最佳答案
0

你可以参考 MSDN :http://msdn.microsoft.com/zh-cn/library/t547y10h.aspx

这个有关于小数的设置,感觉有点麻烦。

sqlParametersOut.Add(new SqlParameter("@dec3", SqlDbType.Decimal, 18, ParameterDirection.Output, true, byte.Parse("18"), byte.Parse("6"), "", DataRowVersion.Default, null));

 

如果单纯的输出的话,为什么不直接输出 NVarchar类型呢,然后在前台处理时,转化下就可以了白。

收获园豆:10
宝宝,爸爸爱你 | 初学一级 |园豆:57 | 2014-07-01 22:58
其他回答(7)
0
Zery | 园豆:6151 (大侠五级) | 2014-05-10 21:05

差别好像 就是rtnval.Direction = ParameterDirection.ReturnValue; 这一句,不过我改成这样子就会报错,报错的文字 是 过程或函数 'brpbomweight' 需要参数 '@dec3',但未提供该参数。

支持(0) 反对(0) zhengyingcan | 园豆:12 (初学一级) | 2014-05-11 10:04
0
SqlParameter param = new SqlParameter("@dec3", SqlDbType.Decimal);

把@dec3中的@去掉试试

丁学 | 园豆:18730 (专家六级) | 2014-05-11 13:57

去掉了也是一样

支持(0) 反对(0) zhengyingcan | 园豆:12 (初学一级) | 2014-05-11 14:00
0

 数据库

Snail的梦 | 园豆:278 (菜鸟二级) | 2014-05-12 10:42

支持(1) 反对(0) Snail的梦 | 园豆:278 (菜鸟二级) | 2014-05-12 10:43

@Snail的梦: 不行,试过了没有用

支持(0) 反对(0) zhengyingcan | 园豆:12 (初学一级) | 2014-05-13 19:34
0

oParam[0].Value = strApplicateMonth;
oParam[1].Direction = ParameterDirection.Output;
oParam[2].Value = 0;
oParam[2].Direction = ParameterDirection.Output;
oParam[3].Value = strDepartmentCode;

 

int IntResult = Convert.ToInt32(oParam[2].Value);
string strOrderCode = oParam[1].Value.ToString();

 

在sql里的赋值例如set @result=1 这个是IntResult 的结果

sunlary | 园豆:934 (小虾三级) | 2014-05-12 15:45

@Snail的梦: 不行,试过了没有用,有没有邮箱地址发给你看你一下,谢谢

支持(0) 反对(0) zhengyingcan | 园豆:12 (初学一级) | 2014-05-13 19:35

@zhengyingcan: sunlarylv@163.com

支持(0) 反对(0) sunlary | 园豆:934 (小虾三级) | 2014-05-14 08:48

@zhengyingcan: 我发到你邮箱了,你试试能不能行。

支持(0) 反对(0) sunlary | 园豆:934 (小虾三级) | 2014-05-15 13:56
0

cmd.Parameters["@dec3"].Value.ToString();

试试这个

守护之翼 | 园豆:204 (菜鸟二级) | 2014-05-15 16:10

    //输出参数

            SqlParameter param = new SqlParameter("@dec3", SqlDbType.Decimal);

            param.Direction = ParameterDirection.Output;

            cmd.Parameters.Add(param);             //执行存储过程                        cmd.ExecuteNonQuery();             MessageBox.Show(param.Value.ToString());             MessageBox.Show(cmd.Parameters["@dec3"].Value.ToString());

 

两种方式出来的结果都是0

支持(0) 反对(0) zhengyingcan | 园豆:12 (初学一级) | 2014-06-16 18:24
0

你确定你在你的存储过程那里对那个 @dec3 进行了 正确的 赋值操作码?

有实际上跑过那个存储过程没有?

teser | 园豆:202 (菜鸟二级) | 2014-06-16 16:11

    //输出参数

            SqlParameter param = new SqlParameter("@dec3", SqlDbType.Decimal);

            param.Direction = ParameterDirection.Output;

            cmd.Parameters.Add(param);             //执行存储过程                        cmd.ExecuteNonQuery();             MessageBox.Show(param.Value.ToString());             MessageBox.Show(cmd.Parameters["@dec3"].Value.ToString());

 

两种方式出来的结果都是0

@dec3不用赋值吧, 因为是运算出来的结果

支持(0) 反对(0) zhengyingcan | 园豆:12 (初学一级) | 2014-06-16 18:26

@zhengyingcan:  按照你的 代码的话,我当时测试的是 0.1 可能是被四舍五入了吧···

支持(0) 反对(0) teser | 园豆:202 (菜鸟二级) | 2014-06-17 14:02
0

dbParam.Size =  

这帖子原来是,这么久了

老张一笑 | 园豆:215 (菜鸟二级) | 2014-12-25 17:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册