cho*_*obo 3 sql t-sql sql-server stored-procedures
是否可以将选择查询的结果存储在存储过程中,然后在存储过程中使用这些结果来进一步查询结果集?
示例//我的存储过程(简化示例)
ALTER PROCEDURE [dbo].[users]
AS
BEGIN
Declare @users nvarchar(1000)
set @users = select * from users
// query @users result for counts, sums where clauses, etc...
END
Run Code Online (Sandbox Code Playgroud)
您希望users成为表变量或临时表而不是nvarchar类型.
表变量版本
DECLARE @users TABLE (
UserId int,
...
)
INSERT INTO @users
(UserId, ...)
SELECT *
FROM users
SELECT *
FROM AnotherTable t
INNER JOIN @users u
ON ...
Run Code Online (Sandbox Code Playgroud)
临时表版本
CREATE TABLE #users (
UserId int,
...
)
INSERT INTO #users
(UserId, ...)
SELECT *
FROM users
SELECT *
FROM AnotherTable t
INNER JOIN #users u
ON ...
Run Code Online (Sandbox Code Playgroud)
您还可以隐式创建临时表.
SELECT *
INTO #users
FROM users
SELECT *
FROM AnotherTable t
INNER JOIN #users u
ON ...
Run Code Online (Sandbox Code Playgroud)