Sql-server – output parameter in SQL

sql serverstored-procedures

I'm trying to pass a new ID onto another procedure but keep getting a "too many parameters" error.

CREATE OR ALTER PROCEDURE dbo.Process_Insert 
  @Name        VARCHAR(50), 
  @IntOnly     INT, 
  @enabled     BIT, 
  @CustomerID  INT, 
  @AllowAttr   BIT, 
  @IsKit       BIT = 0, 
  @Body        NVARCHAR(MAX)=NULL, 
  @new_ident   INT NULL OUTPUT
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO Process
(Name, 
 IntOnly, 
 enabled, 
 CustomerID, 
 AllowAttr, 
 IsKit, 
 Body)
VALUES
(
  @Name, @IntOnly, @enabled, @CustomerID, @AllowAttr, @IsKit, @Body);
SET @new_ident=SCOPE_IDENTITY();
END;

Then in the below procedure I get "Procedure or function has too many arguments specified". I'm guessing it has something to do with the output parameter, but can't work it out.

CREATE OR ALTER PROCEDURE dbo.Customer_Init 
  @CustID INT
AS
DECLARE 
  @vendID INT;
EXEC dbo.Process_Insert 
     @Name="NameOfEntry", 
     @IntOnly=0, 
     @enabled=False, 
     @CustomerID=@CustID, 
     @AllowAttr=False, 
     @Body="test", 
     @new_ident=@vendID OUTPUT;
SELECT @vendID;

Best Answer

You need to pass @IsKit as well, between AllowAttr and Body.