Sqlserver分页存储过程

  • 异常信息
    //关于存储过程传出值"String[2]: Size 属性具有无效大小值 0,” 错误  )
    //传出参数必须指定大小
 

存储过程或函数 'proc_GetEmployee' 需要参数 '@CustomerID',但未提供该参数
忘记设置:command.CommandType = CommandType.StoredProcedure;

 

  • 存储过程
    --传入当前页和每页显示行数

    --declare @startRow int, @endRow int
    --set @startRow = (@pageIndex - 1) * @pageSize +1
    --set @endRow = @startRow + @pageSize –1

IF(OBJECT_ID('proc_Pager','P') IS NOT NULL)
   DROP PROC proc_Pager
GO 
CREATE PROC proc_Pager
(
 @tabName VARCHAR(30),
 @pkName VARCHAR(10),
 @startIndex INT,
 @endIndex INT,
 @totalCount VARCHAR(10) OUT
)
AS
 DECLARE @c VARCHAR(500)

  --SET @c='SELECT '+@totalCount+'=count(*) FROM '+@tabName
  SET @c='SELECT count(*) FROM '+ @tabName
  EXEC(@c)
  
  SET @c=' SELECT * FROM 
    (SELECT ROW_NUMBER() OVER(ORDER BY '+@pkName+') as rowId, * FROM '+@tabName+') temp 
   WHERE temp.rowId between '+CAST(@startIndex AS VARCHAR(5))+' AND '+CAST(@endIndex AS VARCHAR(5)) 
   
   EXEC(@c)
GO
  • 调用存储
    DECLARE @totalCount INT --SET @totalCount=0 EXEC proc_Pager 'Customers','CustomerID',11,20,@totalCount OUT PRINT '总行数'+CAST(@totalCount AS VARCHAR(5))
  • VS调用存储过程
    DbHelperSqlServer db = new DbHelperSqlServer(); ParamsHelperSqlServer paras = new ParamsHelperSqlServer(); paras.Add("@tabName", "Customers"); paras.Add("@pkName", "CustomerID"); paras.Add("@startIndex", 11); paras.Add("@endIndex", 20); //关于存储过程传出值"String[2]: Size 属性具有无效大小值 0,” 错误 ) //传出参数必须指定大小 paras.Add("@totalCount", string.Empty, System.Data.SqlDbType.VarChar, 10, System.Data.ParameterDirection.Output); var v = db.GetDataSet("proc_Pager", paras.ListParameter, CommandType.StoredProcedure);
posted @ 2012-03-18 16:35    阅读(817)  评论(0编辑  收藏  举报