Sql server 是否将程序结果用于其他条件?

Sql server 是否将程序结果用于其他条件?,sql-server,stored-procedures,Sql Server,Stored Procedures,我编写了一个过程,获取了解密另一个表中密码所需的两列(分别包含对称密钥名和证书名)。它工作得非常好。我得到了我的结果,到目前为止这是有效的 “获取”过程如下所示: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [fetch_data] AS BEGIN SET NOCOUNT ON; SELECT [KeyName], [CertName] FROM [Group] INNER JOIN LT_G

我编写了一个过程,获取了解密另一个表中密码所需的两列(分别包含对称密钥名和证书名)。它工作得非常好。我得到了我的结果,到目前为止这是有效的

“获取”过程如下所示:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [fetch_data] 

AS

BEGIN

SET NOCOUNT ON;

SELECT [KeyName], [CertName] FROM [Group]

INNER JOIN LT_Groups ON [Group].GroupId = LT_Groups.GroupId 

INNER JOIN Verify ON Verify.UserID = LT_Groups.UserId AND VERIFY.USERNAME = 
CURRENT_USER

END

GO

EXEC fetch_data

现在我想写另一个过程,它应该与第一个过程的结果一起工作。我只是不知道如何在另一个查询中使用“获取数据”的结果。

您必须定义可诱惑的,然后将执行的第一个存储过程结果存储在其中,如下所示:

INSERT INTO #YourTable
EXEC SP

最简单的方法是
insert exec
,但它确实存在一些问题。如果插入过程输出的列发生更改,则会出现错误。还有其他潜在的问题,请参阅附带的参考资料以了解更多信息

插入exec示例:

create table #fetch_data (keyname varchar(32), certname varchar(32));
insert into #fetch_data
  exec dbo.fetch_data
insert exec的替代方法是使用表值函数、共享临时表、全局临时表和表值参数

参考文献

  • 在这种情况下,A可能比A更合适

    表值函数可以从其他查询中调用,使它们返回的值随时可用

    示例

    -- Defines table-valued function.
    CREATE FUNCTION fetch_data ()
    RETURNS TABLE
    AS
    RETURN
    (
        -- Get detiails.
        SELECT 
            [KeyName], 
            [CertName] 
        FROM 
            [Group]
            INNER JOIN LT_Groups    ON  [Group].GroupId = LT_Groups.GroupId 
            INNER JOIN Verify       ON  Verify.UserID   = LT_Groups.UserId 
                                    AND VERIFY.USERNAME = CURRENT_USER
    );
    GO
    
    
    -- Using table-valued function.
    SELECT  
        *
    FROM
        fetch_data()
    ;