在我的 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
这就是我找不到的原因吗?有什么办法可以改变吗?这对我来说是新的......
最佳答案
点击此处的链接,http://weblogs.sqlteam.com/mladenp/archive/2008/08/21/SQL-Server-2005-temporary-tables-bug-feature-or-expected-behavior.aspx
似乎您需要使用 GO 语句。
关于sql-server - SQL Server - 如果不存在则创建临时表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42511328/