【问题标题】:Select * into #tempTable from exec Command shows an error [duplicate]Select * into #tempTable from exec 命令显示错误 [重复]
【发布时间】:2014-09-15 12:31:09
【问题描述】:

我正在执行包含以下代码的字符串

DECLARE @BadgeNo NVARCHAR(MAX);
SET @BadgeNo='8107';

SELECT * INTO #Testing 
   EXEC spNotification 'Param1','Param2','Param3','Param4';

EXEC  spSqlTmpTblToHtmlTbl 'tempdb..#Testing'

我只想要 html 格式的结果。所以我正在执行spnotification 来获取结果。

spSqlTmpTblToHtmlTbl 将临时表转换为表格式。但这里有一个问题,我无法从spNotification 结果创建临时表。我知道

select * into 

命令不适用于exec 命令。那么我该如何实现呢?

【问题讨论】:

  • 把你的spNotification改成表值函数然后使用
  • 我已经有了存储过程,我们正在尝试全局使用该存储过程。如果我们必须对逻辑进行任何修改,我们必须单独更改 SP。函数也需要很长时间来编译和执行。

标签: sql sql-server sql-server-2008


【解决方案1】:

你可能想做这样的事情“:

CREATE TABLE #Testing 
(
   COLUMN1 INT,
   COLUMN2 INT
)

INSERT INTO #Testing 
Exec spNotification 'Param1','Param2','Param3','Param4';

同时检查How to SELECT * INTO [temp table] FROM [stored procedure]

或者您可以尝试使用 OPENQUERY:

SELECT  *
INTO    #Testing 
FROM    OPENQUERY(YOURSERVERNAME, 'Exec spNotification 'Param1','Param2','Param3','Param4'')

【讨论】:

  • spnotification会产生动态数据。在我们的环境中openQuery已经被限制了!
【解决方案2】:

试试这个:

DECLARE @Testing TABLE 
  ( 
     COLUMN1 INT, 
     COLUMN2 INT 
  ) 

INSERT INTO @Testing 
            (COLUMN1, 
             COLUMN2) 
EXEC SPNOTIFICATION 
  'Param1', 
  'Param2', 
  'Param3', 
  'Param4'; 

【讨论】:

    猜你喜欢
    • 2014-09-11
    • 2019-11-08
    • 2012-07-14
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 2014-03-22
    相关资源
    最近更新 更多