日期:2014-05-18  浏览次数:20462 次

怎么取得存储过程中返回的结果集?
存储过程中有返回结果集,目前只能返回头一个,想要返回第二个,第三个,怎么获取哈?

declare   @rvalue   int
exec   @rvalue=XXX;
return   @rvalue

执行结果:
100002478
100004092
100004093
100004094
100004095
100004096


aspx后台:

int   CouponNum   =   Convert.ToInt32(cmd.Parameters[ "ReturnValue "].Value);

代码怎么改呢?高手进来哈

------解决方案--------------------
看不懂问题

你打算返回的 "第二个,第三个 "是什么东西?
------解决方案--------------------
用select或者insert将结果过放到临时表中,返回临时表中的数据集就可以了。
------解决方案--------------------
1.
LZ 你那所谓的存储过程有结果集吗?
我们通常说的结果集,指的通过 SELECT 语句返回的结果


2.
SqlClient 支持返回多个结果集, 通过 DataReader.NextResult 访问


3.
你所谓的 "结果集 "应该是多个返回参数吧?

使用 return 只能返回一个参数, 要返回多个参数, 请使用输出参数


CREATE PROC MyProc (
@InputParm1 varchar,
@OutputParm1 int output,
@OutputParm2 varchar(200) output
)
AS

SET @OutputParm1 = 911
SELECT @OutputParm2 = @InputParm1

/*
your more codes
such as
SELECT * FROM table1
...
SELECT * FROM table2
*/

RETURN 119


string connStr;
string spName = "MyProc ";
SqlConnection conn;
// ....
SqlCommand cmd = new SqlCommand(spName, conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new Parameters( "@InputParm1 ", SqlDbType.Varchar));
cmd.Parameters.Add(new Parameters( "@OutputParm1 ", SqlDbType.Int)).Directoin = ParameterDirection.Output;
cmd.Parameters.Add(new Parameters( "@OutputParm2 ", SqlDbType.Varchar, 200));
// 指定为输出参数
cmd.Parameters[2].Directoin = ParameterDirection.Output;
// 指定为返回指
cmd.Parameters.Add(new Parameters( "@ReturnValue ", SqlDbType.Int)).Directoin = ParameterDirection.ReturnValue;

SqlDataReader dr = cmd.ExecuteReader();

while(dr.Read()) { // ... } // 第一个 SELECT
if(dr.NextResutle()) while(dr.Read()) { // ... } // 第二个 SELECT
// ....

dr.Close(); // 关闭 DataReader ,读取输出参数
int out1 = (int)cmd.Parameters[1].Value;
string out2 = (string)cmd.Parameters[2].Value;
int retVal = (int)cmd.Parameters[3].Value; // 返回值
// ...


Hope helpful!


------解决方案--------------------
fill到dataset里面看一下dataset的tables集合你就明白了