【发布时间】:2012-06-05 05:57:14
【问题描述】:
CREATE PROCEDURE [dbo].[sp_GetPageWiseData]
(
@tableName sysname,
@orderColumn nvarchar(100),
@PageIndex INT = 1,
@PageSize INT = 10,
@RecordCount varchar(10) OUTPUT
)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @query varchar(2000),
@minimumIndex varchar(5),
@maximumIndex varchar(5)
SET @minimumIndex=convert(varchar,(@PageIndex - 1) * @PageSize + 1)
SET @maximumIndex=convert(varchar,@PageIndex * @PageSize)
SET @query='SELECT ROW_NUMBER() OVER(ORDER BY ' + @orderColumn + ' ASC)AS RowNumber,* INTO #Results FROM ' + @tableName + ';
SELECT ' + @RecordCount + '=COUNT(*) FROM #Results;
SELECT * FROM #Results WHERE RowNumber BETWEEN ' + @minimumIndex + ' AND ' + @maximumIndex + ';
DROP TABLE #Results'
Exec (@query)
END
这里的问题是当程序执行时,输出参数@RecordCount显示NULL值。
为什么?
请解释一下。 谢谢
【问题讨论】:
-
您应该不为您的存储过程使用
sp_前缀。该前缀已由 Microsoft 保留以供其将来使用。使用其他任何东西 - 只是不要sp_... -
为什么只从代码中返回行号?在这种情况下,使用动态 SQL 是错误的方法。每个表使用一个过程
-
从这里获取想法:aspsnippets.com/Articles/…
标签: asp.net sql-server paging