首页 > 解决方案 > 无法执行 SQL Server 存储过程

问题描述

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

Msg 2714,Level 16,State 6,Procedure Hire_Termination,Line 18 [Batch Start Line 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

标签: sqljsonsql-serverstored-proceduresimport

解决方案


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

推荐阅读