深入sql server 2005 万能分页存储过程的详解

2023年 4月 18日 73.7k 0

–建立主表临时表 CREATE TABLE #temp ( rownumber bigint, orderseqno VARCHAR(36), goodsname VARCHAR(50), companyname VARCHAR(100) ) –建立子表临 时表 CREATE TABLE #detail ( orderseqno VARCHAR(36), detailid UNIQUEIDENTIFIER, un

–建立主表临时表CREATE TABLE #temp(rownumber bigint,orderseqno VARCHAR(36),goodsname VARCHAR(50),companyname VARCHAR(100))–建立子表临 时表CREATE TABLE #detail(orderseqno VARCHAR(36),detailid UNIQUEIDENTIFIER,unitprice DECIMAL(12,2),Qty int)–插入主表数据到主表临时表insert into #tempSELECT oo.rownumber, oo.OrderSeqNO, oo.GoodsName, oo.CompanyName FROM(SELECT ROW_NUMBER () OVER (ORDER BY oi.createdate DESC) AS rownumber,oi.OrderSeqNO, oi.GoodsName ,ci.CompanyNameFROM OrderInfo oi INNER JOIN CompanyInfo ci ON oi.CompanyID=ci.CompanyIDWHERE oi.CreateDate<GETDATE()) AS ooWHERE rownumber BETWEEN 10 AND 20

–定义游标DECLARE @temp_cursor CURSOR–给游标赋值SET @temp_cursor=CURSOR FOR SELECT #temp.orderseqno,#temp.goodsname FROM #temp

–定义游标循环过程中所需保存的临时数据DECLARE @orderseqno VARCHAR(36),@goodsname varchar(50)

–打开游标OPEN @temp_cursor

FETCH NEXT FROM @temp_cursor INTO @orderseqno,@goodsname–循环游标,查询子表数据,然后插入子表临时表WHILE @@FETCH_STATUS=0BEGININSERT INTO #detailSELECT od.OrderSeqNO,od.OrderDetailID, od.UnitPrice,od.QtyFROM OrderDetail odWHERE  od.OrderSeqNO=@orderseqno

FETCH NEXT FROM @temp_cursor INTO @orderseqno,@goodsnameEND

–关闭游标CLOSE @temp_cursorDEALLOCATE @temp_cursor

SELECT * FROM #tempSELECT * FROM #detail–删除临时表DROP TABLE #tempDROP TABLE #detail上面的T-SQL只在SQL Server 2005上调试成功。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论