sql - 在存储过程中存储并使用选择语句结果?

标签 sql sql-server tsql 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

最佳答案

您希望 users 是表变量或临时表,而不是 nvarchar 类型。

表变量版本

DECLARE @users TABLE (
    UserId int,
    ...
)

INSERT INTO @users
    (UserId, ...)
    SELECT *
        FROM users

SELECT *
    FROM AnotherTable t
        INNER JOIN @users u
            ON ...

临时表版本

CREATE TABLE #users (
    UserId int,
    ...
)

INSERT INTO #users
    (UserId, ...)
    SELECT *
        FROM users

SELECT *
    FROM AnotherTable t
        INNER JOIN #users u
            ON ...

您还可以隐式创建临时表。

SELECT *
    INTO #users
    FROM users

SELECT *
    FROM AnotherTable t
        INNER JOIN #users u
            ON ...

关于sql - 在存储过程中存储并使用选择语句结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7533153/

相关文章:

python - 如何将从远程 MySQL 数据库中选择的一些行插入到本地 MySQL 数据库

mysql - SQL查询返回叶节点?

sql - 无法使用 RIGHT 函数创建计算列,因为 CHARINDEX 返回 null

sql - 如果存在排序依据 (SQL Server)

sql - 如何在 SQL Server 中获取此列结果

sql - 根据由另一列分组的不同列的最大值获取值

python - 使用 ODBC 时可以在 SQL 注释中添加任意文本吗?

mysql - 加入两个查询表

sql-server - 是否有一个干净的 T-SQL 查询可以用来验证索引是否具有正确的列?

sql - SQL SERVER 2017中对应GROUP_CONCAT()