我有一个名为
的函数 openCases
,我试图在其中调用另一个存储过程并使用其值,但不确定是否可以这种方式使用它,请指导我是否使用错误的方式
我可以在存储过程中执行此操作,调用其他存储过程
DECLARE @b int
EXEC dbo.info @id, @b OUTPUT;
SET @Eemail = @b.emailaddress
对吗?
更新#1
DECLARE @bTable
,@Eemail varchar(max)
EXEC dbo.info @id, @b OUTPUT;
SET @Eemail = @b.emailaddress
遇到错误:
必须声明标量变量 @Eemail
答案 0 :(得分:1)
您的存储过程应返回一个包含如下电子邮件地址的表:
BEGIN
select Id, EmailAddress, ..., from myTable;
END
然后,您可以像使用它一样
DECLARE @bTable table (Id int,Email varchar(max),...)
EXEC dbo.info @id, bTable OUTPUT;
SET @Eemail = select Email from @bTable
如果您的@bTable包含多行,则会收到错误消息(子查询返回的行数超过1)。要解决此问题,请在where子句中使用ID,例如:where Id = @Id