我对SQL很新,遇到了一个我无法从第二个存储过程中检索其他数据的问题。
我正在尝试一次从两个表中检索数据。 person
表有一个guid,它引用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转换为uniqueidentifier时出错。
我认为它来自最后一行的NameId
。 NameId和Id在两个表中都存储为Guid。
任何帮助将不胜感激。
由于
答案 0 :(得分: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;
更新
我真的不明白你想要什么。看起来像一个简单的JOIN
就足够了:
SELECT *
FROM person p
INNER JOIN crm_personname pn
ON p.Id = pn.Id
WHERE p.Id = @Id;