webForumDet fria alternativet

Stored procedure Insert med CASE

3 svar · 189 visningar · startad av SteveP

StevePMedlem sedan mars 2003772 inlägg
#1

Jag verkar inte få köra ett case i inserten, problemet är i BOLD.

CREATE PROCEDURE spLCPFiles_Insert1
	
	@ContactID 	INT,
	@OpenDate	DATETIME,
	@Client		INT,
	@SubCode	Char(2),
	@FileType	INT

AS

Declare
@Sequence	INT

BEGIN
SET NOCOUNT ON
BEGIN TRANSACTION

SELECT @Sequence = coalesce(max(Sequence),0) + 1

From tblLCPFiles

with (HoldLock)
Where
OrgID = @Client And FileTypeID = @FileType And SubCode = @SubCode

INSERT INTO TblLCPFiles
	(
	ContactID,
	OpenDate,
	OrgID,
	SubCode,
	FileTypeID,
	Sequence
	)

VALUES
	(
	@ContactID,
	@OpenDate,
	@Client,
	@SubCode,
	@FileType,
	[b]Case
	        when Sequence is Null
	        then @Sequence
	        Else Sequence
	end[/b]
	)

SELECT @@IDENTITY AS NewID

COMMIT
END
GO
StevePMedlem sedan mars 2003772 inlägg
#2

Det verkade iofs räcka att enbart använda @sequence.
Jag som tänkte fel

CREATE PROCEDURE spLCPFiles_Insert1
	
	@ContactID 	INT,
	@OpenDate	DATETIME,
	@Client		INT,
	@SubCode	Char(2),
	@FileType	INT

AS

Declare
@Sequence	INT

BEGIN
SET NOCOUNT ON
BEGIN TRANSACTION

SELECT @Sequence = coalesce(max(Sequence),0) + 1

From tblLCPFiles

with (HoldLock)
Where
OrgID = @Client And FileTypeID = @FileType And SubCode = @SubCode

INSERT INTO TblLCPFiles
	(
	ContactID,
	OpenDate,
	OrgID,
	SubCode,
	FileTypeID,
	Sequence
	)

VALUES
	(
	@ContactID,
	@OpenDate,
	@Client,
	@SubCode,
	@FileType,
	@Sequence
	)

SELECT @@IDENTITY AS NewID

COMMIT
END
GO
StevePMedlem sedan mars 2003772 inlägg
#3

Nej förresten.
Om Sequence är "Null" så ska den plussa på ett, alltså använda @sequence annars ska den använda samma värde som sequence returnerade. Alltså om den inte är null så ska den använda max(sequence) annars ska den använda @sequence

CREATE PROCEDURE spLCPFiles_Insert1
	
	@ContactID 	INT,
	@OpenDate	DATETIME,
	@Client		INT,
	@SubCode	Char(2),
	@FileType	INT

AS

Declare
@Sequence	INT

BEGIN
SET NOCOUNT ON
BEGIN TRANSACTION

SELECT @Sequence = coalesce(max(Sequence),0) + 1

From tblLCPFiles

with (HoldLock)
Where
OrgID = @Client And FileTypeID = @FileType And SubCode = @SubCode

INSERT INTO TblLCPFiles
	(
	ContactID,
	OpenDate,
	OrgID,
	SubCode,
	FileTypeID,
	Sequence
	)

VALUES
	(
	@ContactID,
	@OpenDate,
	@Client,
	@SubCode,
	@FileType,
	[b]Case
	        when Sequence is Null
	        then @Sequence
	        Else Sequence
	end[/b]
	)

SELECT @@IDENTITY AS NewID

COMMIT
END
GO
LarsGMedlem sedan dec. 200012 464 inlägg
#4
SELECT @Sequence = max(Sequence) + 1

From tblLCPFiles

with (HoldLock)
Where OrgID = @Client 
And FileTypeID = @FileType 
And SubCode = @SubCode

INSERT INTO TblLCPFiles
	(
	ContactID,
	OpenDate,
	OrgID,
	SubCode,
	FileTypeID,
	Sequence
	)
VALUES
	(
	@ContactID,
	@OpenDate,
	@Client,
	@SubCode,
	@FileType,
	Coalesce(@Sequence,1)
	)
124 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)