簡體   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