SQL Server存储过程INSERT INTO



我有一个存储过程,如果表存在,它应该将数据插入到表中。该部分代码位于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脚本上失败,而不是在ELSE上失败。您的SELECT语句可能不正确。

您可以修复此问题,也可以尝试此方法,然后双击架构和表名

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')
BEGIN
....

您也可以使用OBJECT_ID()作为

IF OBJECT_ID('SCHEMA.MY_TABLE') IS NULL
BEGIN
CREATE TABLE ...
END
ELSE
BEGIN
INSERT ..
END

最新更新