【发布时间】:2019-09-23 17:17:40
【问题描述】:
我想要的最终结果是能够简单地从存储过程中选择。我在互联网上搜索过,不幸的是,互联网上说不能这样做,您首先需要创建一个临时表来存储数据。我的问题是您必须在执行存储过程之前首先定义临时表中的列。这只是耗时。我只是想从存储过程中获取数据并将其粘贴到临时表中。
从编码的角度来看,实现此目标的 FASTEST 途径是什么?简而言之,首先必须从存储过程中查找返回的字段,然后将它们全部写出来,这是非常耗时的。
是否有某种工具可以仅基于存储过程构建 CREATE Table 语句?请参阅屏幕截图以进行说明。
我处理的大多数存储过程都有 50 多个字段。我不期待手动定义每个字段。
这是很好的SO Post,它让我走到了这一步,但不是我所希望的。这仍然需要太多时间。有经验的 SQL Server 人员在做什么?我最近才从 Oracle 跳转到 SQL Server,据我所知,Temp Tables 在 SQL Server 中很重要。
【问题讨论】:
-
有些东西在这里并没有完全加起来。您要求从存储过程中进行选择。如果您的存储过程中有一个选择,它将返回一个数据集。因此,除非您使用该临时表做某事,否则这似乎真的很令人费解。有一些工具可以从表格中展开列列表。也许有些可能会为存储过程这样做。但为什么呢?
-
@JacobH 为什么... 测试 - 我无法将存储过程加入到其他表中。
-
@CodeNovice 看到您的最后一条评论后,您可能需要考虑表值函数。如果有问题的存储过程不执行任何更新或需要动态 SQL,这可能是另一种选择。
-
@CodeNovice 查看您的 DBA 是否可以创建自己的模式。因此,不是 [dbo].[...],而是 [YourUserID].[...] 或者甚至创建一个沙箱数据库(在同一台服务器上),您可以在其中创建可以从主数据库。例如 select * from [MySandbox].[dbo],[myTableValuedFunction]()
-
@CodeNovice 一旦您改进的功能得到演示和验证,它就可以将其迁移到主数据库。我的建议是继续推动增值。
标签: sql-server stored-procedures temp-tables