私はユーザーインターフェイスからシーケンス番号を受け取っているストアドプロシージャを持っています。ストアドプロシージャは、テーブルからレコードを選択し、追加の列を除いて元のテーブルと同じ構造の一時テーブルに挿入します。SQLの一時テーブルに自動インクリメントの値を挿入する方法
この列の値は「シーケンス番号+ 1」になります。連続して挿入する場合、この値は自動的に増加します。私はこれをどのようにするべきですか?そして、あなたが持っている
DECLARE @TempMenuResult AS TABLE (REV_SEQ INT IDENTITY, . . .);
. . .
INSERT INTO @TempMenuResult (CHRG_PTRN_DTL_ID, UPDT_STAMP, UPDT_USER, ORGL_STAMP, ORGL_USER, DEL_FLG, CHRG_PTRN_HDR_ID, SEQ, CHRG_CODE, PORT_CODE, BASIS, UM, RATE, CURRENCY, PER, PREPAID_COLLECT, INV_OFC)
SELECT *
. . .;
:私は自動インクリメント値を保持したい列名は、私はidentity
するだけで列を宣言することにより、これを行うことが容易だと思う「REV_SEQ」
ALTER PROCEDURE [PCC_APP_OWN].[Doc_GetBlChargePatternData]
@RevSeq INT NULL = 0,
@TotalCount INT OUTPUT
AS
BEGIN
DECLARE @DscgPort VARCHAR(7);
DECLARE @tempRowId INT;
DECLARE @tempRevSeq INT;
SET @tempRevSeq = @RevSeq + 1;
DECLARE @TempMenuResult AS TABLE (REV_SEQ INT,
CHRG_PTRN_DTL_ID INT,
UPDT_STAMP DATETIME,
UPDT_USER VARCHAR(12),
ORGL_STAMP DATETIME,
ORGL_USER VARCHAR(12),
DEL_FLG VARCHAR(1),
CHRG_PTRN_HDR_ID INT,
SEQ INT,
CHRG_CODE VARCHAR(3),
PORT_CODE VARCHAR(7),
BASIS VARCHAR(2),
UM VARCHAR(2),
RATE DECIMAL(8,2),
CURRENCY VARCHAR(3),
PER VARCHAR(2),
PREPAID_COLLECT VARCHAR(1),
INV_OFC VARCHAR(6)
);
SELECT @DscgPort = DSCH_PORT
FROM BL
WHERE BL_NO_UID = 1 AND CA_SEQ = 0;
INSERT INTO @TempMenuResult (REV_SEQ, CHRG_PTRN_DTL_ID, UPDT_STAMP, UPDT_USER, ORGL_STAMP, ORGL_USER, DEL_FLG, CHRG_PTRN_HDR_ID, SEQ, CHRG_CODE, PORT_CODE, BASIS, UM, RATE, CURRENCY, PER, PREPAID_COLLECT, INV_OFC)
SELECT
IDENTITY(INT, @RevSeq, 1) AS id, *
FROM
CHRG_PTRN_DTL CHG_1
WHERE
CHG_1.CHRG_PTRN_HDR_ID = @ChargePtrnHdrId
AND CHG_1.PORT_CODE = @DscgPort
AND CHG_1.DEL_FLG = 'N'
UNION
SELECT
IDENTITY(INT, @RevSeq, 1) AS id, *
FROM
CHRG_PTRN_DTL CHG_2
WHERE
CHG_2.PORT_CODE IS NULL
AND CHG_2.DEL_FLG = 'N';
SELECT @TotalCount = COUNT(1) OVER() FROM @TempMenuResult;
SELECT * FROM @TempMenuResult ORDER BY REV_SEQ;
END
使用しているdbmsにタグを付けます。 (そのコードは製品固有です) – jarlh
SQL Server 2016 –
REV_SEQ列ID(RevSeq、1)を作成して何も挿入しないと、パラメータからRevSeq番号から開始されます。 RevSeq + 1、...の実行ごとに1ずつ増え続けます。それを開始したい番号に依存します。その後、他のクエリーからその列に挿入します。 – Veljko89