2017-03-20 6 views
0

私はかなり新しいSQLですが、2番目のストアドプロシージャから追加のデータを取得できないという問題が発生しています。ストアドプロシージャでSELECT出力変数を使用する

2つのテーブルから一度にデータを取得しようとしています。 personテーブルには、personnameテーブルの行を参照するGUIDがあります。私は両方のテーブルのすべての情報が必要です。

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 

私は取得していますエラーがUNIQUEIDENTIFIERにデータ型はnvarcharを変換

エラーです。

最後の行にはNameIdから来ていると思います。 NameIdとIdは両方のテーブルにGuidとして格納されます。

ご協力いただければ幸いです。

おかげ

+0

あなたは 'EXEC [データベース] .rsp_personname名前IDを削除した場合;'ストアドプロシージャが正常に実行されていますか? –

+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

すみません。私はそれをより明確にするために自分の投稿を更新しました。 –

関連する問題