一个十分简单的存储过程,请大家帮看看问题在那里。多谢! 本帖最后由 grassfire1127 于 2010-04-14 05:49:51 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的是什么数据库啊 SQL里面的输出参数应该用output标识吧 不应该是out 是sql server2005,改成output了,但故障还是一样。 改成@pageTotal int out了,问题还是一样的 改成@pageTotal int output了,问题还是一样的 你用的是datareader接受数据应该不影响外面取pageTotal用cmd.Parameters["@pageTotal"].Value;查询结果循环datareader放入LIST就好了你混淆了 我是用:pageTotal = Convert.ToInt32(cmd.Parameters["@pageTotal"].Value);取的output的值啊,您的意思是把这句放如while循环里去?那样不是要重复赋一样的值很多次? create PROCEDURE [dbo].[SY2](@pageTotal int out --返回页总数 )ASSET @pageTotal=4SELECT * FROM tbGOdeclare @i intexec [dbo].[SY2] @i outselect @i/*代码 编号 品种 金额 日期---------- ----------- ---------- ----------- -----------------------0001 1001 材料 500 2010-01-01 00:00:00.0000001 1002 物件 1000 2010-01-01 00:00:00.0000001 1003 饰品 1000 2010-01-01 00:00:00.0000001 1004 废料 230 2010-01-01 00:00:00.0000002 1003 饰品 450 2010-01-01 00:00:00.0000002 1002 物件 900 2010-01-01 00:00:00.0000002 1003 饰品 2500 2010-01-01 00:00:00.0000003 1004 废料 1500 2010-01-01 00:00:00.0000003 1002 物件 700 2010-01-01 00:00:00.0000003 1003 饰品 250 2010-01-01 00:00:00.0000001 1004 废料 500 2010-01-02 00:00:00.0000001 1002 物件 150 2010-01-02 00:00:00.0000001 1003 饰品 100 2010-01-03 00:00:00.0000001 1001 材料 200 2010-01-03 00:00:00.0000002 1003 饰品 2500 2010-01-03 00:00:00.0000003 1002 物件 1500 2010-01-03 00:00:00.0000002 1003 饰品 2500 2010-01-03 00:00:00.0000002 1001 材料 3500 2010-01-03 00:00:00.0000003 1004 废料 1500 2010-01-03 00:00:00.0000001 1004 废料 500 2010-01-04 00:00:00.0000001 1003 饰品 2500 2010-01-04 00:00:00.0000002 1001 材料 1200 2010-01-04 00:00:00.0000003 1003 饰品 10 2010-01-04 00:00:00.000(23 行受影响)-----------4(1 行受影响)*/测试可以输出 使用您的方法测试:declare @i intexec [dbo].[SY2] @i outselect @i能同时得到返回的数据集和输出参数的正确值4,看来存储过程没问题,但到程序中怎么变成0了呢?还请大家指教。 这个有点奇怪,会不会是ADO.net的缘故.楼主能跟踪一下存储过程吗? 执行两次 一次用来接收OUT值;一次用来结束查询查询值 ExecuteReader方法不返回存储过程的返回值 但我去掉SELECT * FROM board这句,程序一点不改就可以得到输出参数的值了啊,而且我以前也是这样也没问题啊 找到问题了,是c#程序中的问题,要先关闭dr,再取输出参数。多谢大家啊! 不要使用ExecuteReader方法而应该用SqlDataAdapter,创建一个adapter容器,返回一个DataSet集(当然你可以添充到DataTable里面),最后再取你的output值 求解SQL语句 方案征集:一年将有1000万条数据,是否需要拆成按月存放,还是就按年存放? sql优化方案,50万条数据 如何在某一范围类进行查询 如何对form1操作 如何提高查寻,统计的速度,高分求解 在线求助:请问该触发器错在哪里?更新前后的num应该不变,但是现在某一行num变大了! 这个语句正确吗?(在线!即时送分!) 我从一个数据库(cnFox)中取数,然后放到另外一个数据库(cnSql)中,语句如下所示. 關於數據恢復的老提示有數據在用怎麼辦啊? 关于动态SQL的问题。明明定义了变量却提示没有定义。 新手问题,使用">"
应该不影响
外面取pageTotal
用cmd.Parameters["@pageTotal"].Value;
查询结果循环datareader放入LIST就好了
你混淆了
我是用:pageTotal = Convert.ToInt32(cmd.Parameters["@pageTotal"].Value);取的output的值
啊,您的意思是把这句放如while循环里去?那样不是要重复赋一样的值很多次?
(
@pageTotal int out --返回页总数
)ASSET @pageTotal=4
SELECT * FROM tbGOdeclare @i int
exec [dbo].[SY2] @i out
select @i
/*
代码 编号 品种 金额 日期
---------- ----------- ---------- ----------- -----------------------
0001 1001 材料 500 2010-01-01 00:00:00.000
0001 1002 物件 1000 2010-01-01 00:00:00.000
0001 1003 饰品 1000 2010-01-01 00:00:00.000
0001 1004 废料 230 2010-01-01 00:00:00.000
0002 1003 饰品 450 2010-01-01 00:00:00.000
0002 1002 物件 900 2010-01-01 00:00:00.000
0002 1003 饰品 2500 2010-01-01 00:00:00.000
0003 1004 废料 1500 2010-01-01 00:00:00.000
0003 1002 物件 700 2010-01-01 00:00:00.000
0003 1003 饰品 250 2010-01-01 00:00:00.000
0001 1004 废料 500 2010-01-02 00:00:00.000
0001 1002 物件 150 2010-01-02 00:00:00.000
0001 1003 饰品 100 2010-01-03 00:00:00.000
0001 1001 材料 200 2010-01-03 00:00:00.000
0002 1003 饰品 2500 2010-01-03 00:00:00.000
0003 1002 物件 1500 2010-01-03 00:00:00.000
0002 1003 饰品 2500 2010-01-03 00:00:00.000
0002 1001 材料 3500 2010-01-03 00:00:00.000
0003 1004 废料 1500 2010-01-03 00:00:00.000
0001 1004 废料 500 2010-01-04 00:00:00.000
0001 1003 饰品 2500 2010-01-04 00:00:00.000
0002 1001 材料 1200 2010-01-04 00:00:00.000
0003 1003 饰品 10 2010-01-04 00:00:00.000(23 行受影响)
-----------
4(1 行受影响)
*/测试可以输出
declare @i int
exec [dbo].[SY2] @i out
select @i
能同时得到返回的数据集和输出参数的正确值4,看来存储过程没问题,但到程序中怎么变成0了呢?还请大家指教。
而应该用SqlDataAdapter,创建一个adapter容器,返回一个DataSet集(当然你可以添充到DataTable里面),最后再取你的output值