繁体   English   中英

存储过程,SQL

[英]stored procedure, sql

我正在尝试创建一个stored procedure ,该stored procedure将一个新订单插入

Order TABLE

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

它给我以下错误

(消息102,级别15,状态1,第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

您的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示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM