2016-04-07 5 views
0

Below-Fehler angezeigt, wenn ich einfache gespeicherte Prozedur in SQL ServerFehler während gespeicherte Prozedur in SQL Server erstellen

Msg 102, Ebene 15, Status 1, Prozedur Test, Linie 2 Falsche Syntax in der Nähe zu schaffen versuchen "Varchar". Msg 137, Ebene 15, Status 1, Prozedurentest, Zeile 27 Muss die Skalarvariable "@" deklarieren.

Sehr neu beim Schreiben gespeicherter Prozeduren. Mit freundlichen Führern

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 [email protected] 
     AND [email protected] 

END 

Antwort

3

Ich glaube, Sie in Ihren Variablen von [] loswerden müssen. Und auch Ihre Update-Abfrage ist falsch:

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 

Und Sie müssen auch Parameter hinzufügen für @period und @customer.

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 [email protected] 
    and [email protected] 
    END 
GO 

entfernen [] Für 1. Fehler, hinzufügen 2 Parameter @Period und @customer

0

Sie Zuweisen von Werten in entgegengesetzter Weise.

Fehler liegt hier

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

Versuchen Sie stattdessen von oben Code

update [dbo].[TEST] 
    set [CUSTNAME][email protected] 
    ,[CUSTOMER_SHORT_NAME][email protected]_SHORT_NAME 
    ,[COUNTRY][email protected] 
    ,[region][email protected] 
    ,[Area][email protected] 
    where [email protected] 
    and [email protected] 
    END 
Verwandte Themen