sql存储过程返回数据的同时返回一个输出参数在asp.net后台该如何接收这两个值
ALTER PROCEDURE [dbo].[_PianPaging]
-- Add the parameters for the stored procedure here
@pageIndex int, --第几页
@pageSize int, --每页显示条数
@pageNum int output --总页数
AS
BEGIN
declare @num int
begin
select @num=COUNT(*) from tbTeacherPlan
if(@num<=@pageSize)
begin
set @pageNum=1
select * from tbTeacherPlan
end
else
begin
declare @b int
set @b=@num%@pageSize
if(@b=0)
set @pageNum=@num/@pageSize
else
set @pageNum=(@num/@pageSize+1) --这是第一个要得到的结果
declare @SQL nvarchar(1000)
set @SQL=' select top ' + cast(@pageSize as nvarchar(5))+ ' * from tbTeacherPlan where tpId not in (select top ' + cast((@pageIndex*@pageSize)as nvarchar(5))+ ' tpId from tbTeacherPlan)'
Exec(@SQL)--这是的二个要得到的结果
end
end
END
在用sqlhelp中的方法读执行后该如何获取这两个结果作为返回值 asp.net sql sqlhelp 存储
[解决办法]
调用的时候不是添加了一些SQl参数吗
/// <summary>
/// 执行存储过程,如需返回结果(有output的参数),则将结果返回
/// </summary>
/// <param name="strProcName">存储过程名</param>
/// <param name="strConn">连接字符串</param>
/// <param name="Params">参数集合,参考SqlParam类</param>
/// <returns>按参数顺序返回结果,失败返回null</returns>
static public object[] ExecuteProcedureWithOutput(string strProcName, string strConn, params SqlParameter[] Params)
{
SqlConnection conn = new SqlConnection(strConn);
try
{
SqlCommand cmd = new SqlCommand();
cmd.CommandText = strProcName;
cmd.CommandType = CommandType.StoredProcedure;
int nOutputParametersCount = 0;
foreach (SqlParam p in Params)
cmd.Parameters.Add(sqlParam);
cmd.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery(); // 你的应该是Scalar了
conn.Close();
int i = 0;
object[] objResult = new object[nOutputParametersCount];
foreach (SqlParameter p in cmd.Parameters)
{
if (p.Direction == ParameterDirection.Output
[解决办法]
p.Direction == ParameterDirection.InputOutput)
objResult[i++] = p.Value;
}
return objResult;
}
catch
{
if (conn.State != ConnectionState.Closed)
conn.Close();
return null;
}
}