请帮忙看一下我的存储过程出了什么问题
我写了一个做分页的存储过程(写了一半),在测试的时候出了错误。不知道错误在那里
create proc fenye2
(
@table_name varchar(100),--表名
@primary_key varchar(100),--唯一字段
@strGetFields varchar(1000) , -- 需要返回的列
@strOrder varchar(400), -- 排序类型
@pagesize int, --页面大小,如每页存储20条记录
@pageindex int, --当前页码
@condition varchar(3000), --查询条件
@all int OUTPUT
)
as
begin
declare @max int
declare @min int
declare @sql varchar(8000)
set @sql = 'select @all = count(*) from '+@table_name+' '+@condition
execute sp_executesql
@sql, --执行上面的sql语句
N'@all int OUTPUT' , --执行输出数据的sql语句,output出总记录数
@all OUTPUT
EXECUTE sp_executesql N'SELECT * FROM AdventureWorks.HumanResources.Employee WHERE ManagerID = @level', N'@level tinyint', @level = 109;
set @max=@pagesize*@pageindex
set @min=@pagesize*(@pageindex-1)
set @sql='select * from (select top '+ltrim(@max)+' '+@strGetFields+' from '+@table_name+' '+@condition+ 'order by '+@strOrder+' ) a where '+@primary_key
+' not in (select top '+ltrim(@min)+' '+@primary_key+' from '+@table_name+' '+@condition+'order by '+@strOrder+')';
--exec
--set @sql='select * from (select top'+@max
--print @all
execute (@sql)
end
go
错误信息:
服务器: 消息 214,级别 16,状态 2,过程 sp_executesql,行 27
过程需要参数 '@statement' 为 'ntext/nchar/nvarchar' 类型。
应该是在
execute sp_executesql
@sql, --执行上面的sql语句
N'@all int OUTPUT' , --执行输出数据的sql语句,output出总记录数
@all OUTPUT
这一段出的问题,不过本事没怎么用过sp_executesql不知道这样写对不对。能不能把要的值付给@all