I am currently working on a project that involves generating sequences using stored procedures in Entity Framework. I was using Code Project article here, and upon attempting to generate the following stored procedure, I received a syntax error:
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE DBO.p_GetNextInSequence
@SequenceKey VARCHAR(20)
AS
BEGIN
SET NOCOUNT ON
DECLARE @LASTNUMBER INT
DECLARE @NEXTNUMBER INT
DECLARE @FORMATTEDNUMBER VARCHAR(40)
DECLARE @MYKEY VARCHAR(30)
IF NOT EXISTS(SELECT 'X'
FROM SequenceControl
WHERE SequenceControl.SequenceKey = @SequenceKey )
BEGIN
SELECT @SequenceKey AS SequenceKey,
CAST('' AS VARCHAR(30)) AS NextSequenceFormatted,
CAST(0 AS INT) AS NextSequenceInt
RETURN
END
DECLARE @SEQFORMAT VARCHAR(30), @IncrementBy INT,
@IncrementStep INT, @zeropadtodigits INT
SELECT @SEQFORMAT = RTRIM(LTRIM(SequenceFormat)),
@IncrementBy = IncrementBy,
@zeropadtodigits = ZeroPadToDigits
FROM SequenceControl
WHERE SequenceControl.SequenceKey = @SequenceKey
DECLARE @THEROWCOUNT INT
SET @THEROWCOUNT = 0
BEGIN TRANSACTION T1
WHILE ( @THEROWCOUNT =0 )
BEGIN
SELECT @LASTNUMBER= LastSequence
FROM SequenceControl
WHERE SequenceControl.SequenceKey= @SequenceKey
UPDATE SequenceControl
SET LastSequence = @LASTNUMBER + @IncrementBy
WHERE SequenceKey = @SequenceKey AND
LastSequence = @LASTNUMBER
SELECT @THEROWCOUNT = @@ROWCOUNT
END
COMMIT TRANSACTION T1
--SQL Complains near this region...
DECLARE @FMTNUM VARCHAR(20)
SET @NEXTNUMBER = @LASTNUMBER + @IncrementBy
IF ( @zeropadtodigits>0)
SET @FMTNUM = ( REPLICATE('0', @zeropadtodigits) +
CAST(@NEXTNUMBER AS VARCHAR(20)), @zeropadtodigits)
ELSE
SET @FMTNUM = CAST(@NEXTNUMBER AS VARCHAR(10))
SET @FORMATTEDNUMBER = REPLACE(@SEQFORMAT,'[#]', @FMTNUM )
SELECT @SequenceKey AS SequenceKey,
CAST(@FORMATTEDNUMBER AS VARCHAR(30)) AS NextSequenceFormatted,
@NEXTNUMBER AS NextSequenceInt
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SQL is complaining about an incorrect syntax near ',' on Line 56:
DECLARE @FMTNUM VARCHAR(20)
However – I can’t seem to figure out where or what is causing the issue. Also, if anyone has any suggestions or articles pertaining to using stored procedures within Entity Framework (and returning output) I would be appreciative.
The actual error is here:
More specifically, here:
, @zeropadtodigits)That comma doesn’t do anything, and
@zeropadtodigitsdoesn’t apply to anything either. There’s no function using that as a parameter inside the parentheses.