Sql server 在存储过程中使用SELECT输出变量
我是SQL新手,遇到了一个无法从第二个存储过程检索额外数据的问题 我试图同时从两个表中检索数据。Sql server 在存储过程中使用SELECT输出变量,sql-server,tsql,Sql Server,Tsql,我是SQL新手,遇到了一个无法从第二个存储过程检索额外数据的问题 我试图同时从两个表中检索数据。person表有一个guid,它引用了personname表中的行。我需要两个表中的所有信息 CREATE PROCEDURE [database].[rsp_person_getitembyid] @Id UNIQUEIDENTIFIER AS SELECT 'Person' AS TableName, * FROM person WHERE Id = @Id;
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存储在两个表中
CREATE PROCEDURE [database].[rsp_person_getitembyid]
@Id UNIQUEIDENTIFIER
AS
SELECT 'Person' AS TableName, *
FROM person
WHERE Id = @Id;
EXEC [database].rsp_personname NameId;
任何帮助都将不胜感激
谢谢您应该将
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;
更新
我真的不明白你想要什么。似乎一个简单的连接就足够了:
SELECT *
FROM person p
INNER JOIN crm_personname pn
ON p.Id = pn.Id
WHERE p.Id = @Id;
您应该将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;
更新
我真的不明白你想要什么。似乎一个简单的连接就足够了:
SELECT *
FROM person p
INNER JOIN crm_personname pn
ON p.Id = pn.Id
WHERE p.Id = @Id;
如果删除EXEC[database].rsp\u personname NameId
存储过程是否成功执行?是的,没有它,它可以正常工作。您可以发布[database].rsp_personname的源代码吗?如果您删除EXEC[database].rsp_personname NameId,我现在已将帖子更新为包含rsp_personname
存储过程是否成功执行?是的,没有它,它可以正常工作。您可以发布[database].rsp_personname的源代码吗?我已经更新了帖子,包含rsp_personname
,谢谢您的回答,但我还需要获取所有其他字段以及NameId列。@SamBunting然后你应该在问题中发布你真正想要的内容。@SamBunting我不太清楚你想要什么,但用我了解的内容更新了我的答案。我现在用一种不同的方式使用父id。不管怎样,我都会接受你的答案,因为它确实起作用了,这可能会帮助更多看到这一点的人。谢谢你的回答,但我还需要获取所有其他字段以及NameId列。@SamBunting那么你应该在你的问题中发布你真正想要的内容。@SamBunting我不太清楚你想要什么,但是用我所了解的更新了我的答案,我现在用一种不同的方式使用了家长id。不管怎样,我都会接受你的答案,因为它确实有效,而且它可能会帮助更多看到这一点的人。