无法执行sql server存储过程

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

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

  1. USE [Kronos]
  2. GO
  3. SET ANSI_NULLS ON
  4. GO
  5. SET QUOTED_IDENTIFIER ON
  6. GO
  7. ALTER PROCEDURE [dbo].[Hire_Termination]
  8. AS
  9. DECLARE @JSON nvarchar(max)
  10. SET @JSON = N'{C:\Automation\Kronos.JSON}'
  11. BEGIN
  12. SELECT @JSON = BulkColumn
  13. FROM OPENROWSET (BULK 'C:\Automation\Kronos.JSON', Single_Clob) import
  14. SET NOCOUNT ON;
  15. SELECT *
  16. INTO [Kronos].[dbo].[Employees]
  17. FROM OPENJSON (@JSON)
  18. END
mzsu5hc0

mzsu5hc01#

SELECT INTO 创建新表。所以不用

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

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

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

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

  1. INSERT INTO [Kronos].[dbo].[Employees] (Col1, Col2, Col3, ...)
  2. SELECT Col1, Col2, Col3, ...
  3. FROM OPENJSON (@JSON);
展开查看全部
rqcrx0a6

rqcrx0a62#

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

相关问题