2017-08-08 143 views
0

值我有一個存儲過程,看起來像這樣:如何存儲在存儲過程中

SET ANSI_NULLS ON 
GO 

SET QUOTED_IDENTIFIER ON 
GO 

CREATE PROCEDURE Guests_Load 
    @Id AS Varchar(30) 
AS 
    SET NOCOUNT ON 

    SELECT * 
    FROM Guests 
    WHERE HotelId = @Id 

    SELECT 
     GroupId, 
     HotelName, 
    FROM 
     HotelView(NOLOCK) 
    WHERE 
     HotelId = @Id 
GO 

現在,我想創建一個新的結果通過寫另一SELECT語句設置。

但是,我想要從第二個SELECT返回的groupId。我該怎麼做呢?我想:

DECLARE @hotelId int; 

SELECT 
    @hotelId = GroupId, 
    HotelName, 
FROM 
    HotelView(NOLOCK) 
WHERE 
    HotelId = @Id 

,但我得到一個錯誤說

是分配一個值的變量不能與數據檢索操作

+0

[將一個值賦給一個變量的SELECT語句不能與數據檢索操作結合](https://stackoverflow.com/questions/4608140/a-select-statement-that-assigns-一個值到一個變量都不能待聯合使用) – mscheker

回答

0

一個簡單的解決方案相結合的SELECT語句只是運行兩次查詢:個人

CREATE PROCEDURE Guests_Load (
    @Id AS Varchar(30) 
) AS 
BEGIN 

    SET NOCOUNT ON; 

    SELECT * 
    FROM Guests 
    WHERE HotelId = @Id; 

    SELECT GroupId, HotelName 
    FROM HotelView 
    WHERE HotelId = @Id; 

    DECLARE @GroupId int; 

    SELECT @GroupId = GroupId 
    FROM HotelView 
    WHERE HotelId = @Id; 

END; 

,我不是一個存儲過程的粉絲打印出表格。所以,我傾向於讓所有的SELECT只使用變量。但是如果你想打印輸出,那麼一種方法是運行兩次代碼。