- 异常信息
//关于存储过程传出值"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);