日期:2014-05-17  浏览次数:20398 次

请帮忙看看这句存储过程错在哪里?
想做一个分页的存储过程,只是个简单的实例,为的是学习下存储过程的编写,存储过程代码如下:
SQL code

ALTER proc [dbo].[GetPageData1]
@pageIndex int=1, --页码
@pageSize int=10, --页容量
@tblName varchar(100), --表名
@keyName varchar(100),--主键名
@where varchar(500), --查询条件
@rowCount int output --返回总行数

as
begin
    declare @sqlStr varchar(1000)

    set @sqlStr = 'select @rowCount = count('+@keyName+') from ['+@tblName+']'
    exec(@sqlStr)

end



运行这段存储过程时提示如下错误:

消息 137,级别 15,状态 1,第 1 行
必须声明标量变量 "@rowCount"。

请问错在哪里?应该如何写才对?

------解决方案--------------------
SQL code
ALTER proc [dbo].[GetPageData1]
  @pageIndex int=1, --页码
  @pageSize int=10, --页容量
  @tblName varchar(100), --表名
  @keyName varchar(100),--主键名
  @where varchar(500), --查询条件
  @rowCount int output --返回总行数
  
  as
  begin
      declare @sqlStr varchar(1000)
  
      set @sqlStr = 'select '+convert(varchar(10),@rowCount)+' = count('+@keyName+') from ['+@tblName+']'
      --PRINT @sqlStr  可以通过print来查看,先不用exec
      exec(@sqlStr)
  
  end