⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xxxx.sql

📁 MSSQL2000海量数据分页的存储过程代码
💻 SQL
字号:
declare @page_out int
exec sp_page 'products','typeof',1,0,'*',15,2,'',@page_out
select p.id,p.name,p.typeof,p.addTime,b.name as bName,s.name as sName from [products] p,[bigClass] b,[smallClass] s where p.bigClassId=b.id and p.smallClassId=s.id order by p.typeof
go

select * from products where id not in (select p.id from [products] p,[bigClass] b,[smallClass] s where p.bigClassId=b.id and p.smallClassId=s.id) order by typeof

select * from webgift.products

exec sp_changeobjectowner 'webgift.bigClass','dbo'--改变对象的拥有者

drop proc sp_page

CREATE PROCEDURE sp_page
  @tb         varchar(50), --表名
  @col        varchar(50), --按该列来进行分页
  @coltype    int,         --@col列的类型,0-数字类型,1-字符类型,2-日期时间类型
  @orderby    bit,         --排序,0-顺序,1-倒序
  @collist    varchar(800),--要查询出的字段列表,*表示全部字段
  @pagesize   int,         --每页记录数
  @page       int,         --指定页
  @condition  varchar(800),--查询条件
  @pages      int OUTPUT   --总页数
AS

DECLARE @sql nvarchar(4000),@where1 varchar(800),@where2 varchar(800)

IF @condition is null or rtrim(@condition)=''
BEGIN--没有查询条件
  SET @where1=' WHERE '
  SET @where2='  '
END
ELSE
BEGIN--有查询条件
  SET @where1=' WHERE ('+@condition+') AND '--本来有条件再加上此条件
  SET @where2=' WHERE ('+@condition+') '--原本没有条件而加上此条件
END

SET @sql='SELECT @pages=CEILING((COUNT(*)+0.0)/'+CAST(@pagesize AS varchar)+ --CEILING(num)返回大于或等于num的最小整数
         ') FROM '+@tb+@where2
EXEC sp_executesql @sql,N'@pages int OUTPUT',@pages OUTPUT--计算总页数

IF @orderby=0
  SET @sql='SELECT TOP '+CAST(@pagesize AS varchar)+' '+@collist+
           ' FROM '+@tb+@where1+@col+'>(SELECT MAX('+@col+') '+
           ' FROM (SELECT TOP '+CAST(@pagesize*(@page-1) AS varchar)+' '+
           @col+' FROM '+@tb+@where2+'ORDER BY '+@col+') t) ORDER BY '+@col
ELSE
  SET @sql='SELECT TOP '+CAST(@pagesize AS varchar)+' '+@collist+
           ' FROM '+@tb+@where1+@col+'<(SELECT MIN('+@col+') '+
           ' FROM (SELECT TOP '+CAST(@pagesize*(@page-1) AS varchar)+' '+
           @col+' FROM '+@tb+@where2+'ORDER BY '+@col+' DESC) t) ORDER BY '+
           @col+' DESC'

IF @page=1--第一页
  SET @sql='SELECT TOP '+CAST(@pagesize AS varchar)+' '+@collist+' FROM '+@tb+
    @where2+'ORDER BY '+@col+CASE @orderby WHEN 0 THEN '' ELSE ' DESC' END
EXEC(@sql)
GO

alter table smallClass
add constraint FK_smallClass_bigClass foreign key (bigClassId) references bigClass(id)

alter table bigClass
add constraint PK_bigClass primary key (id)

alter table smallClass
add constraint PK_smallClass primary key (id)

alter table products
add-- constraint FK_products_bigClass foreign key (bigClassId) references bigClass(id),
constraint FK_products_smallClass foreign key (smallClassId) references smallClass(id)

select * from sysobjects where xtype='F'

exec sp_helpconstraint 'products'

select * from smallClass

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -