2016-12-09 7 views
0

Ich versuche, ein stored procedure zu schaffen, die eine neue Ordnung in diegespeicherte Prozedur, SQL

Order TABLE 

OrderId INT 
,CustomerId INT 
,StoreId INT 
,OrderType VARCHAR(50) 
,OrderDate DATE) 

Es gibt mir die folgenden Fehler

(Msg 102, Ebene 15, Status einfügen wird 1 , Zeile 108 Falsche Syntax in der Nähe von '@StoreNumber'.) Was in Zeile 108 steht, ist @StoreNumber = '1'.

Bitte helfen! Hier ist, was ich bisher habe

CREATE PROCEDURE spCreateOrder (
    @CustFName varchar(10), 
    @CustLName varchar(10), 
    @OrderType Varchar(50), 
    @OrderDate Date) 
AS 
Begin 
    DECLARE @CustomerID INT = (SELECT CustomerID FROM CUSTOMER WHERE CustFName =  @CustFName AND CustLName = @CustLName) 
    DECLARE @StoreID INT = (SELECT StoreID FROM Store WHERE StoreID = @StoreID) 

    INSERT INTO tblORDER (CustomerID, StoreID, OrderType, OrderDate) 
    VALUES (@CustomerID, @StoreID, @OrderType, @OrderDate) 
    DECLARE @OrderID INT = (SELECT @@IDENTITY) 
    INSERT INTO tblLINE_ITEM (LineItemID, OrderID, Quantity) 
    VALUES (@LineItemID, @OrderID, @Quantity) 
End 
+1

Ihre Syntax ist SQL Server, aber Ihre Frage ist mit MySQL getaggt. Bitte klären. Es gibt zahlreiche Fehler in der Syntax. . . unausgeglichene Klammern, Deklarationen vor dem Beginn, Schlüsselwörter, die als Tabellennamen verwendet werden. Es gibt wirklich keinen Ort, um anzufangen. –

+0

Es ist ein SQL-Server – user3638739

+2

Es gibt 108 Zeilen in diesem Code noch @StoreNumber. + Code ist fehlerhaft und unlogisch. –

Antwort

0

Ihre SP nicht wirklich Ihre Absicht und auch fehlende Parameter ähneln. Es würde aussehen wie:

CREATE PROCEDURE spCreateOrder (
    @CustFName varchar(10), 
    @CustLName varchar(10), 
    @OrderType Varchar(50), 
    @OrderDate Date, 
    @StoreID INT) 
AS 
Begin 
    DECLARE @MyTable table (OrderID int NOT NULL); 
    INSERT INTO tblORDER (CustomerID, StoreID, OrderType, OrderDate) 
    output inserted.OrderId into @MyTable 
    SELECT CustomerID, @StoreID, @OrderType, @OrderDate 
    FROM CUSTOMER WHERE CustFName = @CustFName AND CustLName = @CustLName; 

    -- insert into tblLINE_ITEM (LineItemID, OrderID, Quantity) 
    -- select ?, OrderId, ? from @MyTable; 
End 

Eine Bestellung enthält fast nie eine einzige Bestellposition. Sie sollten dies überdenken und grundlegende SQL Server-Beispiele überprüfen.