我有一个如下所示的存储过程:
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
语句来创建一个新的结果集。
但是,我想要从第二个groupId
返回的SELECT
。我该怎么做呢?我试过了:
DECLARE @hotelId int;
SELECT
@hotelId = GroupId,
HotelName,
FROM
HotelView(NOLOCK)
WHERE
HotelId = @Id
但我收到错误
为变量赋值的SELECT语句不能与数据检索操作结合使用
答案 0 :(得分:0)
一个简单的解决方案就是运行两次查询:
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
仅使用变量。但是如果你想要打印输出,那么一种方法是运行代码两次。