怎么取得存储过程中返回的结果集?
存储过程中有返回结果集,目前只能返回头一个,想要返回第二个,第三个,怎么获取哈?
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集合你就明白了