如何从另一个存储过程中调用和使用存储过程?

时间:2018-03-26 17:56:48

标签: sql sql-server tsql

我有以下表变量,填充此表的逻辑非常复杂,我需要将其包含在单独的存储过程中:

DECLARE @UserExtendedSecurity TABLE
(
    UserId UNIQUEIDENTIFIER,
    UserName VARCHAR(500),
    HasExtendedSecurity BIT     
)

所以,让我说我将这个逻辑封装在另一个名为GetUserExtendedSecurityData的存储过程中,该存储过程返回一个带有映射到上面@UserExtendedSecurity表变量的列的结果。

让我们说我的主存储过程名为GetUsers,并且我的主要@UserExtendedSecurity表变量已定义。

如何从GetUserExtendedSecurityData拨打GetUsers并将结果填充到我的主@UserExtendedSecurity表中?

2 个答案:

答案 0 :(得分:1)

INSERT INTO @UserExtendedSecurityTable (UserName, HasExtendedSecurity)
EXEC GetUsers ...

GetUsers本身不返回任何结果,因此GetuserExtendedSercurityData的结果将被填充。

答案 1 :(得分:0)

看起来像普通的INSERT INTO

CREATE PROCEDURE dbo.GetUsers 
AS 
BEGIN

/* some code */

DECLARE @UserExtendedSecurity TABLE
(
    UserId UNIQUEIDENTIFIER,
    UserName VARCHAR(500),
    HasExtendedSecurity BIT     
);

INSERT INTO @UserExtendedSecurity
EXEC GetUserExtendedSecurityData;

/* some more code */

END