【问题标题】:Create a data set table from a stored procedure temporary table从存储过程临时表创建数据集表
【发布时间】:2014-12-10 13:01:18
【问题描述】:

我有一系列存储过程,所有这些存储过程都输出一个结果集以及每个存储过程中创建的 3/4 临时表。

我想做的是使用其中一个临时表中的数据创建一个 SAS 数据集表。目前,我设法引用的只是 sp 的结果集。

目前给我 sp 结果集的代码:

DATA table_name
SQL "EXEC sp_name '" & %parameter1 & "', '" & %parameter2 & "','" & %parameter3 & "'" ;
RUN;

那么,我可以引用一个临时表,而不是像示例中那样引用结果集吗?

谢谢!

【问题讨论】:

  • 你好。您是在 SAS 中执行存储过程,还是在 SQL Server Management Studio 中执行存储过程?
  • 另外,您能验证以下内容吗?我想我明白,但想确定 - 您的存储过程创建临时表。您目前可以将结果集放入 SAS,但您也希望将临时表放入 SAS。对吗?
  • 存储过程正在从 SAS 执行 - 我正在测试并在 Management Studio 中构建了 sp。第二点是正确的 - 我得到了结果集,但也想要临时表。

标签: sql sql-server stored-procedures sas temp-tables


【解决方案1】:

您可以使用 SQL 直通语句实现此目的:

proc sql;
    connect to odbc as YourAlias ( dsn = YourDSNName connection = SHARED );
    execute (
            exec uspYourStoredProcedure;
            ) by YourAlias;

create table SAS.YourDataSet as 
    select * 
    from connection to YourAlias (
                                  select * 
                                  from #TempTableCreatedAbove
                                  );
disconnect from YourAlias;
quit;

您需要将示例修改如下:

YourAlias = 给连接一个别名

YourDSNName = 用于连接的系统 DSN

uspYourStoredProcedure = 替换为您的存储过程的名称

YourDataSet = 为您的新 SAS 数据集命名

#TempTableCreatedAbove = 替换为由于执行存储过程而创建的临时表的名称

替换上述值并执行语句后,您应该会看到一个新的 SAS 数据集。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 2011-07-15
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 2013-11-01
    相关资源
    最近更新 更多