【发布时间】:2018-10-29 18:42:49
【问题描述】:
我有一个存储过程,如果该表存在,它应该将数据插入到表中。这部分代码在ELSE BEGIN ... END 语句中。我收到一个错误,指出 OBJECT 已经存在...
我的代码如下:
IF NOT EXISTS(SELECT TOP 1 * FROM SYSOBJECTS
WHERE name = 'smsdss.c_order_utilization_lihn_svc_w_order_dept_desc_bench'
AND xtype = 'U')
BEGIN
CREATE TABLE SCHEMA.MY_TABLE ()
END
ELSE BEGIN
DECLARE @TODAY_B DATE;
DECLARE @START_B DATE;
DECLARE @END_B DATE;
SET @TODAY_B = GETDATE();
SET @START_B = DATEADD(YEAR, DATEDIFF(YEAR, 0, @TODAY_B) -1, 0);
BLAH BLAH BLAH
INSERT INTO SCHEMA.MY_TABLE
SELECT
COLUMN_A,
COLUMN_B,
..... ,
COLUMN_N
FROM
#TEMP_B
WHERE
ORDER_YEAR > (SELECT MAX(ZZZ.ORDER_YEAR) FROM SCHEMA.MY_TABLE)
END
【问题讨论】:
-
请包括包含
IF语句的一行 -
该错误表明代码在 CREATE TABLE 脚本上失败(在 IF 块内,而不是在 ELSE 内)。可能您的 SELECT 语句不正确。
-
如果表存在,它应该转到 else 开始...否?
-
试试这个并仔细检查架构和表名:
IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'smsdss' AND TABLE_NAME = 'c_order_utilization_lihn_svc_w_order_dept_desc_bench') -
...发现错误...在我的 if 语句中。我从名称参数中取出了架构,它工作正常。
标签: sql-server tsql sql-server-2014