sql-server - SQL Server - 如果不存在则创建临时表

标签 sql-server stored-procedures temp-tables

在我的 SQL Server 2012 环境中,我创建了一系列存储过程,它们在它们之间传递预先存在的临时表(我在这里尝试了不同的架构,但由于需求/过程的性质而无法绕过它)。

我想做的是在存储过程中检查是否已经创建了临时表,如果没有,则创建它。

我当前的 SQL 如下所示:

IF OBJECT_ID('tempdb..#MyTable') IS NULL
    CREATE TABLE #MyTable
    (
        Col1 INT,
        Col2 VARCHAR(10)
        ...
    );

但是当我尝试运行它时 当表已经存在时 ,我收到错误消息

There is already an object named '#MyTable' in the database



因此,它似乎并没有简单地忽略 If 语句中的那些行。

有没有办法做到这一点 - 如果临时表尚不存在,则创建一个临时表,否则,使用内存中已有的表?

谢谢!

更新:

无论出于何种原因,根据@RaduGheorghiu 从评论中提出的建议,我发现系统创建了一个临时表,其名称类似于 dbo.#MyTable________________________________________________0000000001B1
这就是我找不到的原因吗?有什么办法可以改变吗?这对我来说是新的......

最佳答案

关于sql-server - SQL Server - 如果不存在则创建临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42511328/

相关文章:

c# - 如何在 GridView 中显示某些列?

c# - 如何更改 Web 配置文件以使用 MySQL 并完全忽略 SQL Express 或 SQL Server?

java - 使用 java 从临时表中选择数据

mysql - 将相同的表连接到多个表,三种不同的条件。 mysql

sql-server - 无法在 SSMS 中查看 GEOGRAPHY(空间结果选项卡)

sql-server - 如何在 SQL 中对单列连接的日期时间字段求和

sql - 一次删除所有存储过程

mysql - 存储过程一遍又一遍地插入相同的值

sql-server - 如何在sql server 2005中获取x和y之间的日期表

mysql - 查询中同时使用 group by 和 order by 时避免创建临时表