简体   繁体   English

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

[英]SQL Server Stored Procedure Return Value Based on Query Success

In SQL Server 2014, I have created a simple stored procedure which does a bulk insert; 在SQL Server 2014中,我创建了一个简单的存储过程,该过程执行批量插入; what I'm struggling with is capturing if the bulk insert succeed or failed and returning 0 or 1 respectively. 我正在努力的工作是捕获批量插入成功还是失败并分别返回0或1。

The stored procedure code is: 存储过程代码为:

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

I'm trying to capture the EXEC result and return a 1 if all went well and 0 if an error occurred. 我正在尝试捕获EXEC结果,如果一切顺利,则返回1,如果发生错误,则返回0。

something like 就像是

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

should do, or use an output parameter for sp_executesql, or a try catch block. 应该这样做,或者将输出参数用于sp_executesql,或者使用try catch块。

可以使用TRY...CATCH '为Transact-SQL实施错误处理,类似于Microsoft Visual C#中的异常处理...'。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM