2017-03-20 66 views
0

我對SQL相當陌生,遇到過無法從第二個存儲過程中檢索其他數據的問題。在存儲過程中使用SELECT輸出變量

我試圖一次從兩個表中檢索數據。 person表具有引用personname表中的行的引用。我需要兩個表中的所有信息。

CREATE PROCEDURE [database].[rsp_person_getitembyid] 
    @Id UNIQUEIDENTIFIER 
AS 
    SELECT 'Person' AS TableName, * 
    FROM person 
    WHERE Id = @Id; 

    EXEC [database].rsp_personname NameId; 

rsp_personname的內部是:

CREATE PROCEDURE [database].[rsp_personname] 
    @Id UNIQUEIDENTIFIER 
AS 

    SELECT 'PersonName' AS TableName, * 
    FROM crm_personname WHERE Id = @Id 

我得到的錯誤是

錯誤轉換數據類型爲nvarchar到唯一標識符。

我認爲這是來自NameId在最後一行。 NameId和Id在兩個表中都以Guid存儲。

任何幫助,將不勝感激。

感謝

+0

如果刪除了'EXEC [數據庫] .rsp_personname填充NameID;'請問存儲過程執行成功? –

+1

是的,沒有它就可以正常工作。 –

+0

你可以發佈[數據庫] .rsp_personname的來源嗎? –

回答

3

你應該對一個變量存儲NameId,然後用它來調用下一個SP:

CREATE PROCEDURE [database].[rsp_person_getitembyid] 
@Id UNIQUEIDENTIFIER 
AS 

DECLARE @NameId nvarchar(100); 

SELECT @NameId = NameId 
FROM person 
WHERE Id = @Id; 

EXEC [database].rsp_personname @NameId; 

UPDATE

我真的不明白是什麼你要。似乎是一個簡單JOIN就足夠了:

SELECT * 
FROM person p 
INNER JOIN crm_personname pn 
    ON p.Id = pn.Id 
WHERE p.Id = @Id; 
+0

感謝您的回答,但我還需要獲取所有其他字段以及NameId列。 –

+1

@SamBunting然後你應該發佈你真正想要得到的問題。 – Lamak

+0

對不起。我更新了我的帖子,使其更清晰。 –