簡體   English   中英

基於查詢成功的SQL Server存儲過程返回值

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

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

就像是

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

可以使用TRY...CATCH '為Transact-SQL實施錯誤處理,類似於Microsoft Visual C#中的異常處理...'。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM