PDA

View Full Version : سوال: مشکل با یه مدل پیچیده از دستور insert -



DotNet_King
جمعه 04 مرداد 1387, 17:16 عصر
با سلام و خسته نباشید

این کد رو تو همین سایت یکی از اساتید گذاشتن. یک جدول موقت میسازه
برای پر کردن این جدول از دستور insert استفاده شده ولی ظاهرش خیلی عجیبه

خیلی سرچ زدم ولی به اون فرم آشنای ساده insert رسیدم- نمی دونم تحته چه عنوانی باید سرچ زد!

میشه راجع به این مدل دستور insert توضیح بدید که ساز و کارش به چه صورته
INSERT INTO #PageIndex (OrderID)
SELECT
intID
FROM
tblOrders
SELECT COUNT(intID) FROM tblOrders;
SELECT
O.*
FROM
tblOrders O,
#PageIndex PageIndex
WHERE
O.intID = PageIndex.OrderID AND
PageIndex.IndexID > @PageLowerBound AND
PageIndex.IndexID < @PageUpperBound
ORDER BY
PageIndex.IndexID
END

اگه منبعی دارید لطفا معرفی کنید.

ممنون از لطفتون.

اصل کد


CREATE PROCEDURE spBindGridView
(
@PageIndex int,
@PageSize int
)
AS
BEGIN
DECLARE @PageLowerBound int
DECLARE @PageUpperBound int
DECLARE @RowsToReturn int
SET @RowsToReturn = @PageSize * (@PageIndex + 1)
SET ROWCOUNT @RowsToReturn
SET @PageLowerBound = @PageSize * @PageIndex
SET @PageUpperBound = @PageLowerBound + @PageSize + 1


CREATE TABLE #PageIndex
(
IndexId int IDENTITY (1, 1) NOT NULL,
OrderID int
)
INSERT INTO #PageIndex (OrderID)
SELECT
intID
FROM
tblOrders
SELECT COUNT(intID) FROM tblOrders;
SELECT
O.*
FROM
tblOrders O,
#PageIndex PageIndex
WHERE
O.intID = PageIndex.OrderID AND
PageIndex.IndexID > @PageLowerBound AND
PageIndex.IndexID < @PageUpperBound
ORDER BY
PageIndex.IndexID
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

DotNet_King
شنبه 05 مرداد 1387, 13:57 عصر
دوستان لطفا اگه می دونید یه راهنمایی بکنید.
من در این رابطه با inset تو در تو یه چیزهایی پیدا کردم ولی فک می کنم این با اون متفاوته :)

رضا جاسبی
جمعه 11 مرداد 1387, 03:51 صبح
من فکر نمی کنم Insert تو در تو باشه. تنها Insert که داره مربوط به دستور INSERT INTO #PageIndex (OrderID)
میشه که استفاده از نتیجه یک Select به عنوان پارامتر Insert هست. این syntax دستور Insert Into است. انتهای این دستور Insert میشه دقیقا چهار خط پایینتر(در کدی که نوشتی) که مجموعا میشه این دستور :
SELECT
intID
FROM
tblOrders
و خط بعدی که SELECT COUNT(intID) FROM tblOrders هست یک دستور مجزاست که تعداد شماره های سفارش رو می گیره (احتمالا)