从函数内部调用存储过程并使用它

时间:2019-01-24 17:01:17

标签: sql-server tsql

我有一个名为

的函数

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

1 个答案:

答案 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