SQL 服务器存储过程 INSERT INTO
SQL Server stored procedure INSERT INTO
我有一个存储过程,如果 table 存在,它应该将数据插入到 table 中。该部分代码位于 ELSE BEGIN ... END
语句中。我收到一个错误消息,指出该对象已经存在...
我的代码如下:
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
陈述不正确。
您可以解决这个问题,或者试试这个,然后 仔细检查架构和 table 名称。
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
我有一个存储过程,如果 table 存在,它应该将数据插入到 table 中。该部分代码位于 ELSE BEGIN ... END
语句中。我收到一个错误消息,指出该对象已经存在...
我的代码如下:
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
陈述不正确。
您可以解决这个问题,或者试试这个,然后 仔细检查架构和 table 名称。
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