0
我有這個表:生成XML上表的列添加自定義值
CREATE TABLE [dbo].[INCREMENTAL_TABLE](
[GTIN] [bigint] NOT NULL,
[PRESENTATION] [tinyint] NOT NULL,
[LEVEL] [bigint] NOT NULL,
[INCREMENTAL] [bigint] NOT NULL DEFAULT(0)
CONSTRAINT [PK_INCREMENTAL_TABLE_1] PRIMARY KEY CLUSTERED
(
[GTIN] ASC,
[PRESENTATION] ASC,
[LEVEL] ASC
) ON [PRIMARY]
而現在,我創建一個存儲過程:
CREATE PROCEDURE MyProc
@gint bigint,
@pres tinyint,
@level bigint,
@quantity smallint
AS
DECLARE @current_incremental bigint
DECLARE @counter bigint
-- Get current incremental.
set @current_incremental =
(SELECT INCREMENTAL
FROM INCREMENTAL_TABLE
WHERE GTIN = @gint AND
PRESENTATION = @pres AND
LEVEL = @level)
--
SET @counter = @current_incremental
WHILE ((@counter - @current_incremental) <= @quantity)
BEGIN
SET @counter = @counter + 1
END
GO
這裏面存儲過程我有用@quantity
節點創建一個XML。想象一下,我有這樣的電話:
EXEC MyProc @gint = 1 @pres = 2 @level = 3 @quantity = 100
而且,我有這個初始值:
@current_incremental = 10
有了這些數據,我必須與這些值返回一個xml:
GTIN | PRESENTATION | LEVEL | INCREMENTAL
-----+--------------+-------+------------
1 | 2 | 3 | 10
-----+--------------+-------+------------
1 | 2 | 3 | 11
-----+--------------+-------+------------
1 | 2 | 3 | 12
[ ... ]
-----+--------------+-------+------------
1 | 2 | 3 | 109
但我不打算把它插入表格。
如果我無法通過選擇該表格來獲取這些數據,我該如何獲得XML?
謝謝您的回答。我有一個問題:什麼是數字?它是數字表嗎? – VansFannel
@VansFannel在我的答案中的數字是一個CTE,而不是一個數字表。 CTE使用兩個相當大的表之間的交叉連接來提供足夠的行。如果你不想使用CTE,你可以創建一個你自己的數字表,它只有一列從1(或0)編號到你需要的多行。 –
@VansFannel更多關於數字表的信息[here](http://www.sqlservercentral.com/articles/T-SQL/62867/) –