关于在存储过程中调用分页存储过程的难题?

blackpipi2009 2004-12-26 01:08:20

已经有了一个公用的分页存储过程
Create PROCEDURE ListPage(
@tblName nvarchar(200), ----要显示的表或多个表的连接
@fldName nvarchar(200) = '*', ----要显示的字段列表
@pageSize int = 10, ----每页显示的记录个数
@page int = 1, ----要显示那一页的记录
@pageCount int = 1 output, ----查询结果分页后的总页数
@Counts int = 1 output, ----查询到的记录数
@fldSort nvarchar(100) = null, ----排序字段列表或条件
@Sort bit = 0, ----排序方法,0为升序,1为降序
@strCondition nvarchar(200) = null, ----查询条件,不需where
@ID nvarchar(50) ----主表的主键
)

返回了一个SELECT出来的数据集, 如果直接在 类方法中调用这个分页存储过程,就可以得到数据集,
但现在要用另一个存储过程中调用这个分页存储过程, 如

Create PROCEDURE GetDATA

as
exec ListPage 'tablename','fldName'

在类方法中调用 GetDATA 返回的是空的, 问怎么样都能返回一个数据集呢?

...全文
87 点赞 收藏 3
写回复
3 条回复
blackpipi2009 2004年12月26日
GetDATA 肯定是正确的, 因为要利用SQL 的缓存作用, 将多个过滤条件参数传给GETDATA如


Create PROCEDURE GetDATA
(
@name varchar(10),
@address varchar(50)
)
as
declare @sqlwhere varchar(500)
set @sqlwhere='where name='+name+' and address ='+@address
exec ListPage 'tablename','fldName',@sqlwhere

这样执行
exec ListPage 'tablename','fldName',@sqlwhere 就是一个数据集, 但执行
GetDATA就拿不到这个数据集, 因为只是执行,而没有SELECT
如果像
SELECT exec ListPage 'tablename','fldName',@sqlwhere as xxx
就只是一条数据, 但我想要整个数据集,怎么办? 难道还要再SELECT入一个临时表中吗?
回复 点赞
goregrypeck 2004年12月26日
确保 GetDATA是正确执行的!
为什么不让类直接调用ListPage
回复 点赞
blackpipi2009 2004年12月26日
LLL
回复 点赞
发动态
发帖子
应用实例
创建于2007-09-28

1.1w+

社区成员

6.8w+

社区内容

MS-SQL Server 应用实例
社区公告
暂无公告