在存储过程中存储和使用select语句结果?

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)

Joe*_*lli 6

您希望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)