- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章针对SQL 2000 的分页存储过程代码分享由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
代码如下
---------------------------------------------------- --针对SQL 2000 的分页存储过程 --Time:2008-9-25 ---------------------------------------------------- ALTER PROCEDURE [dbo].[uoSp_RecordPager] --要分页显示的表名,可多表连查,但不能使用别名。 --例:uo_Article LEFT JOIN uo_ArticleClass ON uo_Article.AClassID=uo_ArticleClass.ID @Table_info varchar(100), --用于定位记录的主键(惟一键)字段,可以是逗号分隔的多个字段 @field_id nvarchar(1000), --要显示的页码 @CurrentPage int=1, --每页的大小(记录数) @PageSize int=10, --以逗号分隔的要显示的字段列表,如果不指定,则为*。但多表联查时,若有同名字段,则必须显示指定要查的字段。 --例:uo_Article.*,uo_ArticleClass.ClassName @Field_info nvarchar(1000), --以逗号分隔的排序字段列表,可以指定在字段后面指定DESC/ASC 用于指定排序顺序 @Field_Order nvarchar(1000)= ' ', --查询条件 @otherwhere nvarchar(1000)= ' ', @RecordCount int OUTPUT, --总行数 @PageCount int OUTPUT, --总页数 @SQLSTR nvarchar(2000) output AS SET NOCOUNT ON --分页字段检查 IF ISNULL(@field_id,N' ')= ' ' BEGIN RAISERROR(N'分页处理需要主键(或者惟一键) ',1,16) RETURN END --其他参数检查及规范 IF ISNULL(@PageSize,0) <1 SET @PageSize=10 IF ISNULL(@Field_info,N' ')=N' ' SET @Field_info=N'* ' IF ISNULL(@Field_Order,N' ')=N' ' SET @Field_Order=N' ' ELSE SET @Field_Order=N'ORDER BY '+LTRIM(@Field_Order) IF ISNULL(@otherwhere,N' ')=N' ' SET @otherwhere=N' ' ELSE SET @otherwhere=N' WHERE ('+@otherwhere+N') ' --计算@RecordCount declare @sqlt nvarchar(1000) set @sqlt = 'SELECT @RecordCount = COUNT(' + @Field_id + ') FROM ' + @Table_Info + @otherwhere exec sp_executesql @sqlt,N'@RecordCount int output',@RecordCount output --如果@PageCount为NULL值,则计算总页数(这样设计可以只在第一次计算总页数,以后调用时,把总页数传回给存储过程,避免再次计算总页数,对于不想计算总页数的处理而言,可以给@PageCount赋值) IF @PageCount IS NULL BEGIN DECLARE @sql nvarchar(4000) SET @sql=N'SELECT @PageCount=COUNT(*) ' +N' FROM '+@Table_info +N' '+@otherwhere EXEC sp_executesql @sql,N'@PageCount int OUTPUT ',@PageCount OUTPUT SET @PageCount=(@PageCount+@PageSize-1)/@PageSize END IF ISNULL(@CurrentPage,0) <1 SET @CurrentPage=1 IF @CurrentPage > @PageCount and @PageCount>0 SET @CurrentPage=@PageCount --第一页直接显示 IF @CurrentPage = 1 BEGIN SET @SQLSTR = N'SELECT TOP ' + str(@PageSize) +N' '+@Field_info +N' FROM '+@Table_info +N' '+@otherwhere +N' '+@Field_Order --PRINT @SQLSTR EXEC(@SQLSTR) END ELSE BEGIN ---------------------------------------------------- --获取第一个表的表名 DECLARE @FirstTableName varchar(20) SET @FirstTableName = @Table_info IF CHARINDEX(N',',@FirstTableName)>0 OR CHARINDEX(N'.',@FirstTableName)> 0 OR CHARINDEX(N' ',@FirstTableName)> 0 BEGIN WHILE CHARINDEX(N',',@FirstTableName)> 0 SELECT @FirstTableName=LEFT(@FirstTableName,CHARINDEX(N',',@FirstTableName)-1) WHILE CHARINDEX(N'.',@FirstTableName)> 0 SELECT @FirstTableName=LEFT(@FirstTableName,CHARINDEX(N'.',@FirstTableName)-1) WHILE CHARINDEX(N' ',@FirstTableName)> 0 SELECT @FirstTableName=LEFT(@FirstTableName,CHARINDEX(N' ',@FirstTableName)-1) END --构造SQL语句 SET @SQLSTR = N'SELECT * FROM (' + N' SELECT TOP '+STR(@PageSize*@CurrentPage) +N' '+ @Field_info + N' FROM '+@Table_info +N' '+@otherwhere +N' '+@Field_Order + N') '+@FirstTableName+N' WHERE '+@field_id+N' NOT IN (' + N' SELECT TOP '+STR(@PageSize*(@CurrentPage-1))+N' '+ @field_id + N' FROM '+@Table_info +N' '+@otherwhere +N' '+@Field_Order + N') ' + N' '+@Field_Order EXEC(@SQLSTR) ---------------------------------------------------- END 。
最后此篇关于针对SQL 2000 的分页存储过程代码分享的文章就讲到这里了,如果你想了解更多关于针对SQL 2000 的分页存储过程代码分享的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
如果我声明了类似的类型 type test(NSIZE) integer, len :: NSIZE real :: dummy(NSIZE) contains procedure,
我知道这是一个不太可能的事情,但是由于“选项私有(private)模块”的限制,甚至更糟糕的“私有(private)子/函数”的限制,有谁知道是否有一种方法可以从 Excel 应用程序隐藏 VBA 过
我有两个表,property 和 component。 component.id_property = property.id。 我正在尝试创建一个过程,该过程对所选属性的组件进行计数,如果所选属性没
我有一份报告,它是在 SSRS 2005 中开发的,我正在使用存储过程从数据库中获取结果。报告输出的结果非常简单,如下图所示。 如果假设我正在寻找不同的成员 例如:- MemberID c108 c
我需要一个通用函数/过程,该函数/过程将根据提供的数据计算出我的淡入淡出时间和值,如下所示: 我将字节值保存在字节数组中:这些是起始值。然后,我在其他数组中存储了一些值:这些将是新值。然后我有时间要提
我想在界面的多个按钮上创建相同的操作。是否只能通过创建单独的操作监听器方法并调用执行操作的方法才可行,还是还有其他方法?是否可以将按钮放在一个组中并执行以下操作:- groupButton.setOn
我有以下情况: procedure Test; begin repeat TryAgain := FALSE; try // Code // Code if this an
我正在尝试执行以下操作;假设我在 Oracle 中创建了一个对象类型 create type test as object( name varchar2(12), member procedure p
问题: 如果可能的话,如何声明一个用于任何类型参数的函数 T其中 T 的唯一约束是它被定义为 1D array如 type T is array ( integer range <> ) of a_r
我正在尝试创建这个 mysql 过程来制作一个包含今年所有日期和所有时间的表(以一小时为间隔。) CREATE TABLE FECHAS ( created_at datetime ); CREA
所以, 我在这里面临一个问题,这让我发疯,我认为这是一个愚蠢的错误,所以我不是 MySQL 的新手,但它并不像我想象的那样工作。 尝试将此语句部署到 MySQL 后,我收到此错误: ERROR 106
我有一个架构,其中包含星球大战中的人物列表、他们出现的电影、他们访问的行星等。这是架构: CREATE DATABASE IF NOT EXISTS `starwarsFINAL` /*!40100
我一直在为一家慈善机构创建一款应用程序,允许家庭在节日期间注册接收礼物。数据库组织有多个表。下面列出了这些表(及其架构/创建语句): CREATE TABLE IF NOT EXISTS ValidD
正如上面标题所解释的,我正在尝试编写一个sql函数来按日期删除表而不删除系统表。我在此消息下方放置了一张图片,以便直观地解释我的问题。任何帮助将不胜感激!感谢您的时间! 最佳答案 您可以通过查询INF
DELIMITER $$ CREATE PROCEDURE INSERT_NONE_HISTORY_CHECKBOX() BEGIN DECLARE note_id bigint(20); F
是否可以编写一个存储过程或触发器,在特定时间在数据库内部自动执行,而无需来自应用程序的任何调用?如果是,那么任何人都可以给我一个例子或链接到一些我可以阅读如何做到这一点的资源。 最佳答案 查看 pgA
我需要创建一个过程:1)从表中的字段中选择一些文本并将其存储在变量中2) 更新相同的记录字段,仅添加 yyyymmdd 格式的日期以及过程中的附加文本输入...类似这样的... delimiter /
好的,这就是我想做的: 如果条目已存在(例如基于字段name),则只需返回其id 如果没有,请添加 这是我迄今为止所管理的(对于“如果不存在,则创建它”部分): INSERT INTO `object
以下是我编写的程序,用于找出每位客户每天购买的前 10 件商品。 这是我尝试过的第一个 PL/SQL 操作。它没有达到我预期的效果。 我使用的逻辑是接受开始日期、结束日期以及我对每个客户感兴趣的前“x
我正在尝试在MySQL中创建一个过程那insert week s(当年)发送至我的 week table 。但存在一个问题,因为在为下一行添加第一行后,我收到错误: number column can
我是一名优秀的程序员,十分优秀!