2016-12-09 5 views
0

私はそれは私に次のエラーを与えるストアドプロシージャ、SQL

Order TABLE 

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

に新しい秩序を挿入しますstored procedureを作成しようとしています

(メッセージ102、レベル15、状態1 、Line 108 '@StoreNumber'の近くの構文が間違っています。)108行目は@StoreNumber = '1'です。

助けてください!ここに私がこれまで持っていたものがあります。

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

構文はSQL Serverですが、質問はMySQLにタグ付けされています。明確にしてください。構文には多くの誤りがあります。 。 。不均衡な括弧、 'begin'の前の宣言、テーブル名として使われるキーワード。実際に始める場所はありません。 –

+0

これはSQLサーバーです – user3638739

+2

このコードには108行も@StoreNumberもありません。 +コードはバグで非論理的です。 –

答えて

0

あなたのSPは実際にあなたの意図と欠けているパラメータに似ていません。それは次のようになります:

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 

ほとんどの注文は単一の注文アイテムを含むことはほとんどありません。これを再考して、基本的なSQL Serverの例を確認する必要があります。

関連する問題