【问题标题】:Insert sql query result inside stored procedure in temp table在临时表的存储过程中插入sql查询结果
【发布时间】:2015-03-05 00:54:34
【问题描述】:

我有存储过程,我将整个查询存储在字符串中,然后执行它。现在我想将该执行结果存储到临时表中以供进一步处理。 如下所示:

Exec @Mainsql -- 这会返回查询结果,我需要将其结果插入临时表

我尝试过这样的事情:

Select * Into #TempTable
   From         
      Exec @MainSQL 

但我猜它缺少语法。

所以,我需要将 mainsql 的结果放入 temptable 中

【问题讨论】:

  • 我做了,我得到了这个错误。我是否需要一一指定所有列名。 !!!缺少对象或列名称或为空。对于 SELECT INTO 语句,验证每一列都有一个名称。对于其他语句,请查找空别名。不允许使用定义为 "" 或 [] 的别名。将别名更改为有效名称。

标签: sql sql-server tsql stored-procedures insert


【解决方案1】:

试试这个:

CREATE TABLE #TempTable AS 
Exec @MainSQL 

【讨论】:

  • 我做了,我得到了这个错误。我是否需要一一指定所有列名。 !!!缺少对象或列名称或为空。对于 SELECT INTO 语句,验证每一列都有一个名称。对于其他语句,请查找空别名。不允许使用定义为 "" 或 [] 的别名。将别名更改为有效名称。 ——
  • 等一下,我认为它成功了,我会回复你
  • @ubaidashrafmasoody 你必须先定义#TempTableselect into 创建表并在其中插入数据,但对于insert into,您需要先创建临时表
  • 我试过这个。选择 Into #TempTable Exec @MainSQL ,但它在 into 附近显示不正确的关键字
  • 如果我做这样的事情。声明 TempTable 表并给出将由 mainsql 返回的所有列。会很麻烦。有没有更好的办法。
【解决方案2】:

您必须先创建临时表,如果您需要使用存储过程插入数据,您必须定义将从过程返回的所有列:

CREATE TABLE #TempTable (Col1 INT, Col2 VARCHAR(10))
INSERT INTO #TempTable
EXEC [ProcedureName]

另一个选项是使用OPENROWSET,如果您不知道返回的列:

SELECT * INTO #TempTable
FROM OPENROWSET('SQLNCLI', 'Server=.;Trusted_Connection=yes;', 'EXEC DBName.Schema.ProcedureName')

【讨论】:

    猜你喜欢
    • 2020-12-05
    • 1970-01-01
    • 2020-01-26
    • 2018-07-05
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    相关资源
    最近更新 更多