基于查询成功的SQL Server存储过程返回值

时间:2014-09-17 14:59:07

标签: sql tsql stored-procedures sql-server-2014

在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。

2 个答案:

答案 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#中的异常处理...'