Exec存储过程进入动态临时表

 dv18183995666 发布于 2023-02-13 20:17

据我所知; 我想做的事情在sql中是不可能的,但值得问你们.

假设我有一个存储过程abc,它返回列Id和Value.由于功能原因,此存储过程主要由其他部门使用,我将不时地使用它来进行数据检查.

所以使用它作为我的存储过程的一部分:

DECLARE @tABC TABLE
(
   ID      INT,
   Value   DECIMAL(12,2)
)

INSERT INTO @tABC
   EXEC OtherDb.DataProd.abc

Oky因此现在可以完美地工作,但是如果他们改变了存储过程的结构呢?

在存储过程中添加或删除列会破坏我的代码,因此有一种方法可以使我的代码更加灵活.

我最后一次绝望的尝试是这样的:

WITH tempTable AS
(
    EXEC OtherDb.DataProd.abc
)
SELECT ID, Value FROM tempTable

这显然是悲惨地失败了.

2 个回答
  • SELECT * INTO #TempTable 
    FROM OPENROWSET
    ('SQLNCLI','Server=(local)\SQL2008R2;Trusted_Connection=yes;',
         'EXEC OtherDb.DataProd.abc')
    
    SELECT * FROM #TempTable
    

    2023-02-13 20:21 回答
  • 插入临时表.我知道这可以在2008年及以上工作,不确定2005年.您的临时表列必须与您的存储过程列匹配.

    create table #mytable (custid int,company varchar(50),contactname varchar(50)
                    , phone varchar(50),address1 varchar(50)
                    , address2 varchar(50),city varchar(50)
                    ,st varchar(2),zip varchar(20))
    
    insert into #mytable (custid,company,contactname,phone,address1,address2,city,st,zip)
    exec dbo.sp_Node_CustomerList_wService @segid = 1
    
    select * from #mytable
    where custid = 5
    
    drop table #mytable
    

    2023-02-13 20:21 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有