两个sql server 2000的通用分页存储过程

2016-01-29 15:48 72 1 收藏

两个sql server 2000的通用分页存储过程,两个sql server 2000的通用分页存储过程

【 tulaoshi.com - SQLServer 】

第一个支持唯一主键,第二支持多主键,测试过,效率一般

CREATE PROC P_viewPage
    /*
        no_mIss 分页存储过程 2007.2.20  QQ:34813284
        适用于单一主键或存在唯一值列的表或视图         
    */

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/sqlserver/)

    @TableName VARCHAR(200),     --表名
    @FieldList VARCHAR(2000),    --显示列名
    @PrimaryKey VARCHAR(100),    --单一主键或唯一值键
    @Where VARCHAR(1000),        --查询条件 不含'where'字符
    @Order VARCHAR(1000),        --排序 不含'order by'字符,如id asc,userid desc,当@SortType=3时生效
    @SortType INT,               --排序规则 1:正序asc 2:倒序desc 3:多列排序
    @RecorderCount INT,          --记录总数 0:会返回总记录
    @PageSize INT,               --每页输出的记录数
    @PageIndex INT,              --当前页数
    @TotalCount INT OUTPUT,      --返回记录总数
    @TotalPageCount INT OUTPUT   --返回总页数
AS
    SET NOCOUNT ON
    IF ISNULL(@TableName,'') = '' OR ISNULL(@FieldList,'') = ''
        OR ISNULL(@PrimaryKey,'') = ''
        OR @SortType < 1 OR @SortType 3
        OR @RecorderCount < 0 OR @PageSize < 0 OR @PageIndex < 0
    BEGIN       
        RETURN
    END
 
    DECLARE @new_where1 VARCHAR(1000)
    DECLARE @new_where2 VARCHAR(1000)
    DECLARE @new_order VARCHAR(1000)  
    DECLARE @Sql VARCHAR(8000)
    DECLARE @SqlCount NVARCHAR(4000)

    IF ISNULL(@where,'') = ''
        BEGIN
            SET @new_where1 = ' '
            SET @new_where2 = ' WHERE  '
        END
    ELSE
        BEGIN
            SET @new_where1 = ' WHERE ' + @where
            SET @new_where2 = ' WHERE ' + @where + ' AND '
        END

    IF ISNULL(@order,'') = '' OR @SortType = 1  OR @SortType = 2
        BEGIN
            IF @SortType = 1 SET @new_order = ' ORDER BY ' + @PrimaryKey + ' ASC'
            IF @SortType = 2 SET @new_order = ' ORDER BY ' + @PrimaryKey + ' DESC'
        END
    ELSE
        BEGIN
            SET @new_order = ' ORDER BY ' + @Order
        END

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/sqlserver/)

    SET @SqlCount = 'SELECT @TotalCount=COUNT(*),@TotalPageCount=CEILING((COUNT(*)+0.0)/'
  

来源:http://www.tulaoshi.com/n/20160129/1496496.html

延伸阅读
标签: SQLServer
/*备份数据库的过程*/ if exists(  select * from sysobjects   where name=’pr_backup_db’ and xtype=’p’           ) begin  drop proc pr_backup_db end go create proc pr_backup_db @flag&n...
存储过程功能的优点 为什么要使用存储过程?以下是存储过程技术的几大主要优点: 预编译执行程序。SQL Server只需要对每一个存储过程进行一次编译,然后就可以重复使用执行计划。这个特点通过重复调用存储程序极大地提高了程序的性能。 缩短客户端/服务器之间的信息传输量。如果你的工作环境带宽有限,那么存储过程技术肯定能够满...
在google中搜索“分页存储过程”会出来好多结果,是大家常用的分页存储过程,今天我却要说它是有漏洞的,而且漏洞无法通过修改存储过程进行补救,如果你觉得我错了,请读下去也许你会改变看法。 通常大家都会认为存储过程可以避免sql注入的漏洞,这适用于一般的存储过程,而对于通用分页存储过程是不适合的,请看下面的代码和分析! ...
/* *************************************************************** ** 中国无忧商务网千万数量级分页存储过程 ** *************************************************************** 参数说明: 1.Tables :表名称,视图 2.PrimaryKey :主关键字 3.Sort :排序语句,不带Order&nbs...
标签: SQLServer
  存储过程、存储函数的加密:WITH ENCRYPTION <!--[if !supportLineBreakNewLine]-- <!--[endif]-- CREATE procedure dbo.sp_XML_main @table_name nvarchar(260)='', @dirname nvarchar(20)='' WITH ENCRYPTION as begin .................................................... end go     存储过程、存...

经验教程

251

收藏

34
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部