深入sql server 2005 萬能分頁存儲過程的詳解
–建立主表臨時表
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
)
–插入主表數(shù)據(jù)到主表臨時表
insert into #temp
SELECT 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.CompanyName
FROM OrderInfo oi INNER JOIN CompanyInfo ci ON oi.CompanyID=ci.CompanyID
WHERE oi.CreateDate<GETDATE()
) AS oo
WHERE rownumber BETWEEN 10 AND 20
–定義游標
DECLARE @temp_cursor CURSOR
–給游標賦值
SET @temp_cursor=CURSOR FOR SELECT #temp.orderseqno,#temp.goodsname FROM #temp
–定義游標循環(huán)過程中所需保存的臨時數(shù)據(jù)
DECLARE @orderseqno VARCHAR(36),@goodsname varchar(50)
–打開游標
OPEN @temp_cursor
FETCH NEXT FROM @temp_cursor INTO @orderseqno,@goodsname
–循環(huán)游標,查詢子表數(shù)據(jù),然后插入子表臨時表
WHILE @@FETCH_STATUS=0
BEGIN
INSERT INTO #detail
SELECT od.OrderSeqNO,od.OrderDetailID, od.UnitPrice,od.Qty
FROM OrderDetail od
WHERE od.OrderSeqNO=@orderseqno
FETCH NEXT FROM @temp_cursor INTO @orderseqno,@goodsname
END
–關閉游標
CLOSE @temp_cursor
DEALLOCATE @temp_cursor
SELECT * FROM #temp
SELECT * FROM #detail
–刪除臨時表
DROP TABLE #temp
DROP TABLE #detail
上面的T-SQL只在SQL Server 2005上調(diào)試成功。
相關文章
SQL?Server附加數(shù)據(jù)庫時出現(xiàn)錯誤的處理方法
通過附加功能添加現(xiàn)成的數(shù)據(jù)庫是非常方便的,然而有時會出現(xiàn)附加數(shù)據(jù)庫失敗,下面這篇文章主要給大家介紹了關于SQL?Server附加數(shù)據(jù)庫時出現(xiàn)錯誤的處理方法,需要的朋友可以參考下2022-12-12
sql server通過腳本進行數(shù)據(jù)庫壓縮全備份的方法【推薦】
這篇文章主要介紹了sql server通過腳本進行數(shù)據(jù)庫壓縮全備份的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-06-06
SQL?Server使用T-SQL進階之公用表表達式(CTE)
這篇文章介紹了SQL?Server中T-SQL的公用表表達式(CTE),文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05
mssql server 數(shù)據(jù)庫附加不上解決辦法分享
在我們做開發(fā)中經(jīng)常會對數(shù)據(jù)庫進行備份,但有時假就會出現(xiàn)數(shù)據(jù)庫附加不上問題,下面我們來看看一個朋友的解決辦法2011-09-09

