繁体   English   中英

无法执行 SQL 服务器存储过程

[英]Unable to execute SQL Server stored procedure

尝试执行存储过程时出现以下错误:

消息 2714,级别 16,State 6,过程 Hire_Termination,第 18 行 [批处理开始第 2 行]
数据库中已经有一个名为“Employees”的 object

我在另一个实例中创建了表,我必须使用 JSON 文件并将其导入 SQL 服务器:

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

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);

SELECT INTO 创建一个新表。 因此,第二次运行 SP 时,它会报错如果您想插入现有表然后使用 INSERT INTO Kronos.dbo.Employees SELECT ... 如果您真的只想替换表的内容,那么您可以运行DROP TABLE IF EXISTS 首先是 Kronos.dbo.Employees,然后是 SELECT INTO 语句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM