在SQL Server 2014中,我创建了一个执行批量插入的简单存储过程;如果批量插入成功或失败并分别返回0或1,我正在努力捕获的内容。
存储过程代码为:
ALTER PROCEDURE [dbo].[BulkInsert]
@file_name nvarchar(100)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @bulk_insert NVARCHAR(2000);
SET @bulk_insert =
N'BULK INSERT log_door_access FROM ''' +
@file_name +
N''' WITH (FIELDTERMINATOR = ''\t'', ROWTERMINATOR = ''0x0A'');';
EXEC sp_executesql @bulk_insert;
END
我尝试捕获EXEC
结果,如果一切顺利则返回1,如果发生错误则返回0。
答案 0 :(得分:0)
类似
ALTER PROCEDURE [dbo].[BulkInsert]
@file_name nvarchar(100)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @bulk_insert NVARCHAR(2000);
SET @bulk_insert =
N'BULK INSERT log_door_access FROM ''' +
@file_name +
N''' WITH (FIELDTERMINATOR = ''\t'', ROWTERMINATOR = ''0x0A'');';
declare @r int
EXEC @r = sp_executesql @bulk_insert;
select @r
END
应该执行,或者使用sp_executesql的输出参数或try catch块。
答案 1 :(得分:0)
这可以使用TRY...CATCH
- '实现Transact-SQL的错误处理,类似于Microsoft Visual C#中的异常处理...'