帮忙看一下SQL存储过程输出参数究竟出了什么问题?
use pubs
go
------数据分页存储过程------
CREATE PROCEDURE ReturnPageData
(
@SQL nVARCHAR(4000), --查询语句
@Page int, --当前页数
@RecsPerPage int, --分页项数
@ID VARCHAR(255), --主键字段
@Sort VARCHAR(255), --排序字段
@SortType smallint =0, --排序方式
@Itemcnt int output --输出总记录数
)
AS
DECLARE @Str nVARCHAR(4000)
Declare @strSortType nvarchar(10) ----数据排序规则A
Declare @strFSortType nvarchar(10) ----数据排序规则B
if @SortType=0
begin
set @strFSortType=' ASC '
set @strSortType=' DESC '
end
else
begin
set @strFSortType=' DESC '
set @strSortType=' ASC '
end
SET @Str='SELECT TOP '+CAST(@RecsPerPage AS VARCHAR(20))+' * FROM ('+@SQL+') T WHERE T.'+@ID+' NOT IN
(SELECT TOP '+CAST((@RecsPerPage*(@Page-1)) AS VARCHAR(20))+' '+@ID+' FROM ('+@SQL+') T9 ORDER BY '+@Sort+' '+@strSortType+') ORDER BY '+@Sort+' '+@strFSortType
EXEC sp_ExecuteSql @Str
set @Str='select count(*) itemCount from ('+CAST(@sql AS varchar(100))+') x'
exec @Itemcnt =sp_executesql @Str
return
GO
------调用------
declare @imcnt int
EXEC ReturnPageData 'select * from titles', 1, 5, 'title_id', 'pubdate',@Itemcnt=@imcnt output
print @imcnt
----这里为什么@pcnt打印出来一直为0,但偏偏执行查询的结果却显示正常??