无法执行sql server存储过程

hlswsv35  于 2021-07-27  发布在  Java
关注(0)|答案(2)|浏览(465)

尝试执行存储过程时出现以下错误:
msg 2714,16级,状态6,程序终止,第18行[批次开始第2行]
数据库中已存在名为“employees”的对象
我在另一个示例中创建了表,我必须使用json文件并将其导入sql server:

USE [Kronos]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[Hire_Termination]
AS
    DECLARE @JSON nvarchar(max)
    SET @JSON = N'{C:\Automation\Kronos.JSON}'
BEGIN
    SELECT @JSON = BulkColumn
    FROM OPENROWSET (BULK 'C:\Automation\Kronos.JSON', Single_Clob) import

    SET NOCOUNT ON;

    SELECT * 
    INTO [Kronos].[dbo].[Employees]
    FROM OPENJSON (@JSON)
END
mzsu5hc0

mzsu5hc01#

SELECT INTO 创建新表。所以不用

SELECT * 
INTO [Kronos].[dbo].[Employees]
FROM OPENJSON (@JSON);

使用常规的 INSERT 声明,例如。

INSERT INTO [Kronos].[dbo].[Employees]
SELECT * 
FROM OPENJSON (@JSON);

注意:最好的做法是完整列出插入的列并选择。

INSERT INTO [Kronos].[dbo].[Employees] (Col1, Col2, Col3, ...)
SELECT Col1, Col2, Col3, ...
FROM OPENJSON (@JSON);
rqcrx0a6

rqcrx0a62#

select into创建一个新表。因此,第二次运行sp时,如果要插入到现有表中,它会抱怨,然后使用insert into kronos.dbo.employees select。。。如果您真的只想替换表的内容,那么可以先运行drop table if exists kronos.dbo.employees,然后选择into语句。

相关问题