einfügen Ich habe eine gespeicherte Prozedur, wo ich eine Sequenznummer von der Benutzeroberfläche empfangen. Die gespeicherte Prozedur wählt Datensätze aus einer Tabelle aus und fügt sie in eine temporäre Tabelle ein, deren Struktur der ursprünglichen Tabelle entspricht, mit Ausnahme einer zusätzlichen Spalte.Wie Auto-Inkrement-Wert in temporäre Tabelle in SQL
Diese Spalte enthält den Wert "Sequence Number + 1". Bei aufeinanderfolgenden Einfügungen wird dieser Wert automatisch erhöht. Wie soll ich das machen? Der Spaltenname, wo ich das Auto erhöhte Wert halten wollen, ist „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
Markieren Sie die von Ihnen verwendeten dbms. (Dieser Code ist produktspezifisch.) – jarlh
, dass SQL Server 2016 –
versuchen, wenn Sie Spalte REV_SEQ INT-Identität (RevSeq, 1) erstellen und nichts darin einfügen ... so wird es von Ihrer RevSeq-Nummer von Parameter und starten fortfahren um 1 für jeden Eintrag zu erhöhen, mit RevSeq + 1, 1 zu gehen ... hängt davon ab, welche Nummer Sie starten möchten, danach Einfügen in diese Spalte von anderer Abfrage entfernen – Veljko89