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()
;