删除临时表后可以重新创建它吗?

2023-11-29

Given:

存储过程中的代码:

select bleh
  into #tblTemp
  from FunctionThatReturnsTable('some','params')

-- do some stuff

drop table #tblTemp

-- Error on this command:
-- 'There is already an object named '#tblTemp' in the database.'
select bleh
  into #tblTemp
  from FunctionThatReturnsTable('some','other params')

Problem:

我无法重新创建此临时表。我的解决方法是使用 #tmpTable1、#tmpTable2、#tempTable3 等。有没有办法解决这个问题?每次只使用一个临时表就好了。

如果不是,原因是什么?


正如我的评论所反映的,我建议答案是为您创建的每个对象使用不同的 #temp 表名称。这有点像对医生说:“我这样做时会很痛。”他可能的反应是:“停止这样做!”

这是一个问题的原因是 SQL Server 的解析器尝试一次性解析整个批次。它可以清楚地看到您试图多次创建相同的#temp表,但忽略了DROP之间的命令(我无法确切地告诉你这是为什么,因为我无权访问源代码)。这与您不能执行此操作的原因相同:

IF (1=1)
  CREATE TABLE #foo(i INT);
ELSE
  CREATE TABLE #foo(i VARCHAR(32));

解析器看到两个相同的名称,但无法真正遵循IF/ELSE logic.

除了避免多个同名#temp 表给解析器带来的问题之外,使用唯一名称的另一个好处是它们can如果您没有明确删除它们,则可以重复使用它们。这将减轻 tempdb 在元数据/锁定方面的负载。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除临时表后可以重新创建它吗? 的相关文章

  • 什么是“具有指定instance_id的DacInstance不存在。(Microsoft SQL Server,36004)”?

    我正在尝试使用 dacpac 升级远程 SQL Server 2012 数据库 但收到以下消息 指定instance id 的DacInstance 不存在 微软 SQL Server 36004 我试图在互联网上搜索但找不到任何东西 有任
  • CLR 存储过程与 C# 抛出错误

    您好 我正在使用 C 制作一个 CLR 存储过程 我正在通过示例进行学习 以下是我现在正在尝试的 public static void GetProductsByPrice int price SqlConnection connectio
  • 链接到 SQL 表时如何在 Access 中获得“查找”功能?

    我正在构建一个 SQL 数据库 该数据库将具有 Access 2010 前端 我希望在 Access 中查找某些字段 即用户单击 Access 中的字段并填充下拉列表 在 Access 中使一个字段成为另一个表的查找相当简单 但我似乎不知道
  • SQL LIKE 运算符在应该显示任何结果时没有显示任何结果

    我有一个包含大量信息的车辆表 但其中一列是 MSSQL 表中的 所有者 但我使用时无法选择其中一个所有者LIKE但如果我可以使用 Silkeborg Distributionscenter 是所有者 是的 表和参数中都有一个双空格 所以参数
  • SQL Compact 3.5附加多个数据库/跨数据库查询?

    是否可以将多个数据库附加到 SQL CE 3 5 精简版 例如MasterData sdf Orders sdf 并对它们应用查询 例如 选择 Orders iOrderID Orders cItemID MasterData cItemD
  • 将巨大的 xml 参数传递给存储过程的最佳方法

    实际上我正在尝试通过一个巨大的Xml到我的存储过程 但我总是得到一个输出of memory exception 因为我想通过string其大小限制为 2G 那么这样的事情有没有办法呢 不要使用XmlDocument 将 DOM 完全加载到内
  • 从sql server 2005中的列中获取查询的xml节点

    我有一个包含 2 列的表 第一个是带有主键的整数列 第二个是带有数据的 xml 列 数据列包含xml如下
  • SQL Server:十进制精度/小数位数产生奇怪的结果

    我正在为一个项目编写一些 SQL 我注意到 SQL Server 中一些看似奇怪的行为 涉及除以小数时的答案 以下是一些示例 说明了我所看到的行为 DECLARE Ratio Decimal 38 16 SET Ratio CAST 210
  • GRANT EXECUTE 所需的权限

    我正在为需要能够创建和删除过程但也向其他用户授予执行权限的用户创建一个组 GRANT CREATE PROCEDURE TO xxx xxx GRANT ALTER ON SCHEMA dbo TO xxx xxx 但是 我需要向组授予什么
  • 查找每个客户组的最新帐户

    我有一个包含客户信息的表 每个客户都会分配一个客户 ID 他们的 SSN 他们在开设更多帐户时会保留该 ID 两个客户可能使用同一个帐户 每个客户都有自己的 ID 帐号不按日期排序 我想找到每个客户或客户组的最新帐户 如果两个客户曾经一起使
  • SQL查询获取列的精度值

    我需要一个 SQL 查询来获取某些列的精度值 我主要关心十进制类型列 并且我需要相同的精度值 我意识到在某些版本和数据库服务器供应商中可以这样做 如果您能列出其中的一些 那就太好了 对于 SQL 服务器 select precision f
  • 在sql server中,sys.types中的user_type_id和system_type_id有什么区别

    sql server中sys types视图中的user type id和system type id有什么区别 我想将sys columns与sys types进行内连接以获取用户表中列的数据类型 但这两个视图都有两个字段user typ
  • 使用存储过程并发访问MySQL数据库

    我有一个存储过程 它将读取然后增加数据库中的值 许多程序同时使用这个特定的过程 我担心并发问题 特别是读写器问题 有人可以建议我任何可能的解决方案吗 thanks 首先 正如另一篇文章中所述 使用 InnoDB 从 MySQL 5 5 开始
  • 从 Visual Studio 调试 SQL Server 2005 中的存储过程?

    我在这里和其他地方看到很多令人沮丧的问题 但没有明确的答案 我试图让存储过程进行调试 但没有成功 客户端 VS2005或VS2008 两者都不起作用 当我从存储过程上下文菜单中选择 步入存储过程 时 我在调试窗口中看到 已被用户取消 这就是
  • 我应该如何优化 .net 代码中对一个简单存储过程的多次调用?

    我有一个非常简单的存储过程 create procedure spFoo v varchar 50 as insert into tbFoo select v 我有 50 个值要插入到 tbFoo 中 这意味着在我的 c 代码中我调用 sp
  • 使用存储过程访问数据可以提供哪些安全优势?

    我看到一些指南建议您通过存储过程对所有数据访问进行分层来保护数据库 我知道对于 SQL Server 您可以保护表甚至列免受 CRUD 操作的影响 例如 Logged in as sa USE AdventureWorks GRANT SE
  • 如何编辑表以启用级联删除?

    我有一个代表用户的表 当用户被删除时我得到 DELETE 语句与 REFERENCE 约束冲突 显然 CASCADE DELETE在SQL Server中并不像我想象的那么容易 需要将选项添加到表中 问题是 我不知道如何添加CASCADE
  • 为什么实体框架 6 在插入后不只选择scope_identity()?

    当您使用 EF 6 1 保存实体时 将生成并执行以下 SQL 代码 exec sp executesql N INSERT dbo Customers Name FirstName VALUES 0 1 SELECT CustomerId
  • 无法在 SSIS 查找中选择 ODBC 源

    我正在创建一个用于更新 SQL Server 中的表的包 要更新的详细信息是从 MySQL 数据库获取的 为此 我使用 ODBC 连接管理器连接到 MySQL 但此 ODBC 连接管理器未在 OLE DB 连接管理器中列出 我可以在 Too
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做

随机推荐

  • 无法使用变量设置变量长度

    我现在想做的是创建一个长度由变量定义的数组 但是 当我将变量放入数组长度时 它给出了 非 POD 元素类型 glm vec2 的可变长度数组 错误 但是 如果我用实际数字替换变量 错误就会消失 为什么会发生这种情况以及如何解决这个问题 in
  • 如何将完整的 RazorPage 渲染为字符串?

    我尝试使用来自的解决方案https stackoverflow com a 54043063 234954 将页面渲染为字符串 这样我可以将其转换为 PDF 但这只能让我获得主视图 它不会获得与页面关联的布局 因此它缺少样式表和一些页眉 页
  • 如何在 R 中手动创建和加载命名空间 [重复]

    这个问题在这里已经有答案了 是否可以手动创建并加载命名空间环境foo 没有做出实际的foo包 这样我们就可以使用双冒号运算符foo test访问该环境中的对象 The attach函数将列表或环境附加到搜索路径 foo lt list te
  • 如何在 Python 中将不同的进程固定到各个 cpu 核心

    我正在编写一个 Python 程序 它将从文本文件加载单词列表 然后尝试用每个单词解压缩存档 如果不利用所有 cpu 核心的话 问题并不严重 由于 GIL 如果我没记错的话 Python 中的线程并不是一个很好的选择 所以我想获取cpu c
  • 创建应用程序/产品配置的设计模式/指南

    我想知道是否有任何设计模式 指南或记录的widsom 最佳实践来创建 应用程序配置 结构 数据和文件 我意识到这个问题在一些帖子中已经部分涉及 但我希望以下问题能够促使人们从另一个方面看待这个主题 基本上 创建配置结构需要进行什么样的分析
  • Postgres 更新列数据时出错

    尝试在表上运行更新脚本 但出现错误 错误 ok 列不存在 第 2 行 设置first name ok last name pk 电子邮件 ooo 电话 CREATE TABLE employee employee id SERIAL PRI
  • 验证码 + RequireJS

    如何使用 requirejs 导入 recaptcha 我已经尝试了几件事 但没有任何效果 我需要这样做 以便能够在加载后使用 reCaptcha 的渲染方法自行渲染它 require config paths recaptcha http
  • 警告您的 Apk 正在使用需要隐私策略的权限:(android.permission.READ_PHONE_STATE)

    在清单中未添加 android permission READ PHONE STATE 允许 为什么当我上传新的 apk 版本时出现错误 如下所示 您的应用有一个版本代码为 1 的 apk 该 apk 请求以下权限 android perm
  • 以编程方式在 TFS 中添加新迭代

    我可以通过右键单击项目并转到 团队项目设置 gt 区域和迭代 gt 迭代 选项卡 手动将新迭代添加到 TFS 中的团队项目 是否有一个示例说明如何使用他们的 API 以编程方式执行此操作 Thanks 经过基于 taylonr 链接的一些实
  • as_list() 未在 y_t_rank = len(y_t.shape.as_list()) 上的未知 TensorShape 上定义且与指标相关

    TF 2 3 0 dev20200620 对于具有 sigmoid 二进制输出的模型 我在 fit 期间遇到此错误 我使用 tf data Dataset 作为输入管道 奇怪的是它取决于指标 不工作 model compile optimi
  • JPA。 Stackoverflow 上的级联合并

    这是我的 JPA 结构 电影 查看级联类型 Entity Table name movie public class Movie Id Column name movie id GeneratedValue strategy Generat
  • 关闭 Mac Objective C

    我需要能够实现以下方法 Shutdown Restart Logoff Sleep 在 Mac 上 我使用 XCode 但似乎无法找出执行这些操作的代码 有人可以帮我从这里出去吗 Thanks 一个简单 懒惰的方法是通过一些简单的内联App
  • 如何在 firestore 9 中将具有自定义 ID 的文档添加到 firestore

    如何将自定义 id 添加到 firestore 文档而不是由 firebase 9 自动生成的 id 我在将此代码转换为 firebase 9 版本时遇到问题 db collection cities doc LA set name Los
  • 成员名称不能与其在 g.cs 文件中的封闭类型相同

    我已经在 StackOverflow 中搜索过此问题的解决方案 但显然这次有所不同 在我的 Windows Phone 应用程序中 当用户按下特定按钮时 应用程序应将他重定向到特定的全景页面 因此我按照以下步骤操作 http blogs m
  • 如何使用java中的for循环从类创建新对象?

    我有一个名为 Card 的类 并且有这个 for 循环 int i for i 0 i lt 13 i Card cardNameHere new Card 我想做的是基于 for 循环创建新实例 例如 我希望名称为 card1 card2
  • Apache Kafka 中 Producer.properties 和 Consumer.properties 文件的使用

    Kafka 包内有一个 config 文件夹 其中包含各种配置文件 该文件夹包含 Consumer properties 和 Producer properties 文件 这些配置是在我们运行 Kafka 集群以及我们的代码连接到 kafk
  • MySQL:嵌套集很慢?

    我有一个看起来像这样的表 category 类别 id name 类别 seo 友好 url left id right id 当我运行这样的查询时 大约需要1秒 SELECT node category id AS node catego
  • Gnuplot:二维矢量图的可变颜色(和线宽)

    我正在尝试创建一个 2D 矢量图variablegnuplot 版本 4 4 中的颜色 和线宽 我查看了示例以获取要点 splot vectors dat u 1 2 3 4 rgb 5 6 7 w points pt 7 pointsiz
  • 如何从 json url 获取值

    我正在使用 AngularJS 我想动态获取价格的值 我的意思是从 url json 数据中获取它 这可能吗 这是url json url 这是我的控制器 angular module myApp zingchart angularjs c
  • 删除临时表后可以重新创建它吗?

    Given 存储过程中的代码 select bleh into tblTemp from FunctionThatReturnsTable some params do some stuff drop table tblTemp Error