0

Below errors appear when i am trying to create simple stored procedure in SQL Server

Msg 102, Level 15, State 1, Procedure test, Line 2 Incorrect syntax near 'varchar'. Msg 137, Level 15, State 1, Procedure test, Line 27 Must declare the scalar variable "@".

Very much new to writing stored procedures. Kindly guide

USE [database]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[TEST]
    @[CUSTNAME] VARCHAR(100),                   
    @[CUSTOMER_SHORT_NAME] VARCHAR(25),
    @[COUNTRY] VARCHAR(50),
    @[region] VARCHAR(25),
    @[Area] VARCHAR(25),
AS BEGIN

    SET NOCOUNT ON;

    UPDATE [dbo].[TEST]
    SET
          @[CUSTNAME]=[CUSTNAME]
        , @[CUSTOMER_SHORT_NAME]=[CUSTOMER_SHORT_NAME]
        , @[COUNTRY]=[COUNTRY]
        , @[region]=[region]
        , @[Area]=[Area]
    WHERE period=@period
        AND customer=@customer

END

3 Answers 3

3

I think you need to get rid of [] in your variables. And also your update query is wrong:

USE [database]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[TEST]

   @CUSTNAME VARCHAR(100),                   
   @CUSTOMER_SHORT_NAME VARCHAR(25),
   @COUNTRY VARCHAR(50),
   @region VARCHAR(25),
   @Area VARCHAR(25),

AS BEGIN

   SET NOCOUNT ON;

   UPDATE [dbo].[TEST]
   SET
          [CUSTNAME] = @CUSTNAME
        , [CUSTOMER_SHORT_NAME] = @CUSTOMER_SHORT_NAME
        , [COUNTRY] = @COUNTRY
        , [region] = @region
        , [Area] = @Area
  WHERE period = @period
    AND customer = @customer

END

And you also need to add parameters for @period and @customer.

Sign up to request clarification or add additional context in comments.

Comments

1
USE [my_db]

    GO
    SET ANSI_NULLS ON
    GO
   SET QUOTED_IDENTIFIER ON
   GO

   create PROCEDURE [dbo].[TEST]

   @CUSTNAME varchar(100),                   
   @CUSTOMER_SHORT_NAME varchar(25),
   @COUNTRY varchar(50),
   @region varchar(25),
   @Area varchar(25),
   @period varchar(50),
   @customer varchar(50)
   AS
   BEGIN
   SET NOCOUNT ON;

   update [dbo].[TEST]
   set @CUSTNAME=[CUSTNAME]
  ,@CUSTOMER_SHORT_NAME=[CUSTOMER_SHORT_NAME]
  ,@COUNTRY=[COUNTRY]
  ,@region=[region]
  ,@Area=[Area]
  where period=@period
  and customer=@customer
  END
GO

Remove [] For 1st Error, Add 2 parameter @Period and @customer

Comments

0

You are assigning values in opposite way.

Error lies here

update [dbo].[TEST] set @[CUSTNAME]=[CUSTNAME] > ,@[CUSTOMER_SHORT_NAME]=[CUSTOMER_SHORT_NAME] ,@[COUNTRY]=[COUNTRY] > ,@[region]=[region] ,@[Area]=[Area] where period=@period and > customer=@customer END

Try this instead of above code

 update [dbo].[TEST]
   set [CUSTNAME]=@CUSTNAME
  ,[CUSTOMER_SHORT_NAME]=@CUSTOMER_SHORT_NAME
  ,[COUNTRY]=@COUNTRY
  ,[region]=@region
  ,[Area]=@Area
  where period=@period
  and customer=@customer
  END

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.