페이지 저장 프로 세 스(3)sqlserver 에서 더욱 정확 한 페이지 결 과 를 만 듭 니 다.

어떤 사람 이 커서 가 좋 지 않 으 면 줄 을 잠 글 것 이 라 고 제 기 했 습 니 다.다행히 제 가 잠 긴 것 은 임시 표 입 니 다.데이터 표 가 아니 라 데이터 표 의 작성 작업 에 영향 을 주지 않 습 니 다.다음은 14 층 의 답장 입 니 다.저 는 문득 깨 달 았 습 니 다.그래서 오늘 의 개선 판이 생 겼 습 니 다.커서 의 사용 을 취 소 했 습 니 다.임시 표 는 존재 합 니 다.감사합니다.사실 당신 은 두 번 으로 나 누 어 조회 하면 됩 니 다:1,아니면 RowNumber 메 인 테이블 페이지 2,RowNumber 메 인 시트 페이지 inner join 명세표..커서 가 안 되 는..
 
--
-- , ,
-- ,
CREATE TABLE #order
(
number BIGINT,
orderseqno VARCHAR(36),
)
insert into #order
SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY oi.CreateDate DESC) AS rownumber,oi.OrderSeqNO
FROM OrderInfo oi WHERE oi.OrderSeqNO LIKE '%2%' ) AS o
WHERE o.rownumber BETWEEN 10 AND 20

SELECT * FROM #order INNER JOIN OrderDetail od ON od.OrderSeqNO=#order.orderseqno

DROP TABLE #order
 
--SELECT TOP 10 oi.OrderSeqNO, oi.GoodsName ,ci.CompanyName,od.*
--FROM OrderInfo oi INNER JOIN CompanyInfo ci ON oi.CompanyID=ci.CompanyID
--LEFT JOIN OrderDetail od ON oi.OrderSeqNO=od.OrderSeqNO


-- row_unmber()
-- 10 , 10 , 10
-- , ,
-- , 1:N ,

--
-- CLUSTERED INDEX INDEX_OrderInfo ON OrderInfo (OrderSeqNo)
--
--SET STATISTICS IO ON

select * from
(SELECT ROW_NUMBER () OVER (ORDER BY oi.createdate DESC) AS rownumber,oi.orderseqno ,od.OrderDetailID
FROM OrderInfo oi LEFT JOIN OrderDetail od ON oi.OrderSeqNO=od.OrderSeqNO
WHERE oi.OrderSeqNO LIKE '%2%'
) AS o
WHERE rownumber BETWEEN 10 AND 20

--
-- , ,
-- ,
CREATE TABLE #order
(
number BIGINT,
orderseqno VARCHAR(36),
)
insert into #order
SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY oi.CreateDate DESC) AS rownumber,oi.OrderSeqNO
FROM OrderInfo oi WHERE oi.OrderSeqNO LIKE '%2%' ) AS o
WHERE o.rownumber BETWEEN 10 AND 20

SELECT * FROM #order INNER JOIN OrderDetail od ON od.OrderSeqNO=#order.orderseqno

DROP TABLE #order
-- ,
--1、 , C# , ,
--2、 , , , , C#
--
-- , , , ,

-- ROW_NUMBER() bigint, int
--


--
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 #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

--
DECLARE @orderseqno VARCHAR(36),@goodsname varchar(50)

--
OPEN @temp_cursor

FETCH NEXT FROM @temp_cursor INTO @orderseqno,@goodsname
-- , ,
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

좋은 웹페이지 즐겨찾기