还是老有关问题,分页存储过程。(帮顶有分)
还是老问题,分页存储过程。(帮顶有分)
我用的是邹建的分页存储过程;
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
CREATE Proc [dbo].[p_show]
@QueryStr nvarchar(4000), --表名、视图名、查询语句
@PageSize int=10, --每页的大小(行数)
@PageCurrent int=1, --要显示的页
@FdShow nvarchar (4000)='', --要显示的字段列表,如果查询结果有标识字段,需要指定此值,且不包含标识字段
@FdOrder nvarchar (1000)='' --排序字段列表
.........略
@QueryStr参数是一个查询语句sqlStr,而本身这个sqlStr也是带参数的。
我只能在程序里设置存储过程那5个参数的值,但没法设sqlStr这句sql语句中参数的值。请教各位高手解决方法。
------解决方案--------------------
那你为什么不把那些参数也整合到PROC里?
------解决方案--------------------
your are right!
but you can try:
@QueryStr="select * from tableName where col1='"+col1(C#)+"'";
------解决方案--------------------
@QueryStr 这个可以是表名
在存储过程里写查询语句
------解决方案--------------------
那就再建一个存储过程,在里面先设置sqlStr的参数,然后再调用分页存储过程
------解决方案--------------------
把你需要的参数也传值到存储过程里,然后在里面拼接字符串就好了啊
------解决方案--------------------
你可试试把.@QueryStr参数是一个查询语句sqlStr,而本身这个sqlStr也是带参数的 这两个都当作参数来试试..
------解决方案--------------------
关注
------解决方案--------------------
帮顶!
------解决方案--------------------
人过留名
------解决方案--------------------
我用的是邹建的分页存储过程;
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
CREATE Proc [dbo].[p_show]
@QueryStr nvarchar(4000), --表名、视图名、查询语句
@PageSize int=10, --每页的大小(行数)
@PageCurrent int=1, --要显示的页
@FdShow nvarchar (4000)='', --要显示的字段列表,如果查询结果有标识字段,需要指定此值,且不包含标识字段
@FdOrder nvarchar (1000)='' --排序字段列表
.........略
@QueryStr参数是一个查询语句sqlStr,而本身这个sqlStr也是带参数的。
我只能在程序里设置存储过程那5个参数的值,但没法设sqlStr这句sql语句中参数的值。请教各位高手解决方法。
------解决方案--------------------
那你为什么不把那些参数也整合到PROC里?
------解决方案--------------------
your are right!
but you can try:
@QueryStr="select * from tableName where col1='"+col1(C#)+"'";
------解决方案--------------------
@QueryStr 这个可以是表名
在存储过程里写查询语句
------解决方案--------------------
那就再建一个存储过程,在里面先设置sqlStr的参数,然后再调用分页存储过程
------解决方案--------------------
把你需要的参数也传值到存储过程里,然后在里面拼接字符串就好了啊
------解决方案--------------------
你可试试把.@QueryStr参数是一个查询语句sqlStr,而本身这个sqlStr也是带参数的 这两个都当作参数来试试..
------解决方案--------------------
关注
------解决方案--------------------
帮顶!
------解决方案--------------------
人过留名
------解决方案--------------------
- SQL code
ALTER PROCEDURE [dbo].[Components_MultiPage] @TableName NVARCHAR(MAX), @Fields NVARCHAR(MAX), @Where NVARCHAR(MAX), @OrderBy NVARCHAR(MAX), @Groupby NVARCHAR(MAX), @PageIndex INT, @PageSize INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @BeginIndex INT DECLARE @EndIndex INT DECLARE @Sql NVARCHAR(MAX) DECLARE @SqlCount NVARCHAR(MAX) DECLARE @GroupbyString NVARCHAR(MAX) IF(@Where = '') BEGIN SET @Where = '1 = 1' END SELECT @BeginIndex = (@PageIndex - 1) * @PageSize SELECT @EndIndex = @PageIndex * @PageSize IF(@Groupby <> N'') BEGIN SET @GroupbyString = N' GROUP BY ' + @Groupby END ELSE BEGIN SET @GroupbyString = N' ' END SET @Sql = N' BEGIN WITH TheTable AS( SELECT ' + @Fields + ', ROW_NUMBER() OVER(ORDER BY ' + @OrderBy + ') AS RowNumber FROM ' + @TableName + ' WHERE ' + @Where + ' ' + @GroupbyString + ') SELECT * FROM TheTable WHERE RowNumber > ' + CONVERT(NVARCHAR(255), @BeginIndex) + ' AND RowNumber <= ' + CONVERT(NVARCHAR(255), @EndIndex) + ' END' SET @SqlCount = N'SELECT COUNT(*) AS [Rows] FROM ' + @TableName + ' WHERE ' + @Where + ' ' -- PRINT @Sql -- PRINT @SqlCount EXECUTE SP_EXECUTESQL @Sql EXECUTE SP_EXECUTESQL @SqlCount -- DEBUG -- EXECUTE SP_EXECUTESQL dbo.Components_MultiPage 'User_Users', 'UserId', '', 'UserId', 1, 30 END
------解决方案--------------------
这是SQL的存储过程,不是原创的.
CREATE Procedure BENNY_QueryRecordByPage
(
@PageSize int, --一页多少记录
@PageNumber int, --第几页
@QuerySql varchar(1000),--???????,?* From Test order by id desc
@KeyField varchar(500)
)
AS
Begin
Declare @SqlTable AS varchar(1000)
Declare @SqlText AS Varchar(1000)
Declare @RCount AS int
Set @SqlTable='Select Top '+CAST(@PageNumber*@PageSize AS varchar(30))+' '+@QuerySql