2015-01-04 61 views
0

我可以在一個存儲過程中運行2個查詢嗎?2在一個存儲過程中的SQL查詢

CREATE PROCEDURE AddProd 
    @Store_Name varchar(50), 
    @Price int, 
    @Prod_Name varchar(50), 
    @Qty int, 
    @ProductDescription varchar(50), 
    @RatingSum int, 
    @RatingCount int, 
    @ProductImage varchar(50), 
    @Prod_Date date, 
AS 
BEGIN 
    SELECT S.Store_ID 
    FROM Store S 
    WHERE [email protected] 

    INSERT INTO Product (Store_ID, Price, Prod_Name, Qty, ProductDescription, RatingSum, RatingCount, ProductImage, Prod_Date) 
    VALUES (S.Store_ID, @Price, @Prod_Name, @Qty, @ProductDescrpition, @RatingSum, @RatingCount, @ProductImage, @Prod_Date) 
END 
GO 

對於上面的代碼,我想通過給STORE_NAME用戶給出的參數來檢索STORE_ID。

我想在INSERT語句中使用此STORE_ID

我可以這樣做嗎?

AKA,是從第一個查詢返回的S.store_ID,與我在「Values」中使用的那個相同?

回答

0

,除非你想從SP返回STOREID刪除查詢,放入插入

INSERT INTO Product (Store_ID,Price,Prod_Name,Qty,ProductDescription,RatingSum,RatingCount,ProductImage,Prod_Date) 
values (
    (SELECT S.Store_ID FROM Store S WHERE [email protected]), 
    @Price,@Prod_Name,@Qty,@ProductDescrpition,@RatingSum,@RatingCount,@ProductImage,@Prod_Date) 
1

從技術上講,你可以在一個單一的查詢做到這一點:

INSERT INTO Product 
     (Store_ID, Price, Prod_Name, Qty, ProductDescription, RatingSum, RatingCount, ProductImage, Prod_Date) 
SELECT S.Store_ID, @Price,@Prod_Name,@Qty,@ProductDescription,@RatingSum,@RatingCount,@ProductImage,@Prod_Date 
FROM Store S 
WHERE [email protected] 

我不沒有方便檢查的測試數據,但您可能必須從該查詢中爲select子句中的每個列提供適當的名稱,而不僅僅是變量名稱。唯一的其他原因,這可能無法正常工作是,如果你也想選擇storeID從存儲過程返回,但即使在這種情況下,你可以添加一個OUTPUT子句:

INSERT INTO Product 
      (Store_ID, Price, Prod_Name, Qty, ProductDescription, RatingSum, RatingCount, ProductImage, Prod_Date) 
OUTPUT S.Store_ID 
    SELECT S.Store_ID, @Price,@Prod_Name,@Qty,@ProductDescription,@RatingSum,@RatingCount,@ProductImage,@Prod_Date 
    FROM Store S 
    WHERE [email protected] 

但標題問題,答案是肯定的;您可以在單個存儲過程中執行多個語句。

+0

我不瞭解你的代碼。 查詢在特定值內運行是什麼意思? 另外,「價值」在哪裏? – Cereal

+0

如果直接向insert語句提供select查詢,則不使用'values'子句。我沒有說「讓Query運行在特定值內」,所以我不確定你在那裏問什麼。 –

0

如果STOREID是每個商店名稱的唯一,你可以將其存儲在一個變量,在你插入

CREATE PROCEDURE AddProd 

    @Store_Name varchar(50), 
    @Price int, 
    @Prod_Name varchar(50), 
    @Qty int, 
    @ProductDescription varchar(50), 
    @RatingSum int, 
    @RatingCount int, 
    @ProductImage varchar(50), 
    @Prod_Date date, 

    AS 
    BEGIN 
     DECLARE @StoreID [DataType] 
     SELECT @StoreID = S.Store_ID 
     FROM Store S 
     WHERE [email protected] 

     INSERT INTO Product (Store_ID,Price,Prod_Name,Qty,ProductDescription,RatingSum,RatingCount,ProductImage,Prod_Date) 
     values (@StoreID,@Price,@Prod_Name,@Qty,@ProductDescrpition,@RatingSum,@RatingCount,@ProductImage,@Prod_Date) 
    END 
    GO 

用它在任何情況下,你可以使用下面的

CREATE PROCEDURE AddProd 

    @Store_Name varchar(50), 
    @Price int, 
    @Prod_Name varchar(50), 
    @Qty int, 
    @ProductDescription varchar(50), 
    @RatingSum int, 
    @RatingCount int, 
    @ProductImage varchar(50), 
    @Prod_Date date, 

    AS 
    BEGIN 



    INSERT INTO Product (Store_ID, 
    Price, 
    Prod_Name, 
    Qty, 
    ProductDescription, 
    RatingSum, 
    RatingCount, 
    ProductImage, 
    Prod_Date 
    ) 
    SELECT  
    S.Store_ID  
    @StoreID, 
    @Price, 
    @Prod_Name, 
    @Qty, 
    @ProductDescrpition, 
    @RatingSum, 
    @RatingCount, 
    @ProductImage, 
    @Prod_Date 
    FROM Store S 
       WHERE [email protected] 
      END 
      GO