J'ai une procédure stockée dans laquelle je reçois un numéro de séquence de l'interface utilisateur. La procédure stockée sélectionne les enregistrements d'une table et les insère dans une table temporaire dont la structure est la même que la table d'origine, à l'exception d'une colonne supplémentaire.Comment insérer une valeur d'incrémentation automatique dans une table temporaire dans SQL
Cette colonne contiendra la valeur "numéro de séquence + 1". Et pour les insertions successives, cette valeur s'incrémentera automatiquement. Comment dois-je faire cela? Le nom de la colonne où je veux garder la valeur incrémentée automatique est « 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
Marquez les dbms que vous utilisez. (Ce code est spécifique au produit.) – jarlh
que SQL Server 2016 –
essayez, lorsque vous créez la colonne REV_SEQ INT Identity (RevSeq, 1) et n'y insérez rien ... donc il commencera à partir de votre numéro RevSeq à partir du paramètre et continuer à augmenter de 1 pour chaque entrée, d'aller avec RevSeq + 1, 1 ... dépend du nombre que vous voulez qu'il démarre, après cela supprimer l'insertion dans cette colonne de l'autre requête – Veljko89