Как вернуть две таблицы в T-SQL, используя хранимую процедуру или функции? - PullRequest
0 голосов
/ 08 мая 2018

У меня есть данные о собственности, и я хочу освободить собственность и заняться отдельно в двух разных таблицах в качестве результата возврата Пожалуйста, дайте мне знать, можно ли в результате вернуть 2 таблицы, используя хранимую процедуру или функции?

CREATE FUNCTION PropInfo (@OWnerId INT)
RETURNS @Occupied TABLE 
                  (
                      OwnerId INT,
                      PropertyId INT, 
                      TenantId INT, 
                      PropertyName VARCHAR
                  )
AS
BEGIN
    IF TenantProperty.IsActive = 1
        INSERT INTO @Occupied
            SELECT 
                OwnerId, Property.Id AS PropertyId, 
                TenantProperty.Id AS TenantId, Name AS PropertyName
            FROM 
                Owners 
            INNER JOIN
                OwnerProperty ON Owners.Id = OwnerProperty.OwnerId
            INNER JOIN 
                Property ON OwnerProperty.PropertyId = Property.Id
            INNER JOIN 
                TenantProperty ON Property.Id = TenantProperty.PropertyId
            WHERE 
                OwnerId = @OwnerId

RETURNS @Vacant TABLE 
                (
                    OwnerId INT, 
                    PropertyId INT,  
                    TenantId INT, 
                    PropertyName VARCHAR
                )

IF TenantProperty.IsActive = 0 OR TenantProperty.IsActive IS NULL
BEGIN
    INSERT INTO @Vacant
        SELECT 
            OwnerId, Property.Id AS PropertyId, 
            TenantProperty.Id AS TenantId, Name AS PropertyName
        FROM 
            Owners 
        INNER JOIN
            OwnerProperty ON Owners.Id = OwnerProperty.OwnerId
        INNER JOIN 
            Property ON OwnerProperty.PropertyId = Property.Id
        INNER JOIN 
            TenantProperty ON Property.Id = TenantProperty.PropertyId
        WHERE 
            OwnerId = @OwnerId
    END

    RETURN
END

1 Ответ

0 голосов
/ 08 мая 2018

Вы можете получить более одного набора результатов из хранимой процедуры. Попробуйте следующее.

CREATE PROCEDURE [dbo].[sproc](
    @param int
)
AS
BEGIN
    SELECT * FROM OWNERS
    SELECT * FROM PROPERTY
END

Когда вы выполните dbo.sproc 1, вы получите два набора результатов обратно. Один для ВЛАДЕЛЬЦЕВ и один для СОБСТВЕННОСТИ.

Если вы хотите вывести два типа таблиц из хранимой процедуры, это отдельный вопрос, для которого потребуется отдельное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...