簡體   English   中英

EXEC 語句失敗后 SQL 語句不返回結果

[英]SQL statement not returning results after EXEC statement failure

我的 SQL 腳本如下

DECLARE @batch_load_key INT;

SELECT  @batch_load_key=batch_load_key
FROM load.batch_load
WHERE batch_load_name = N'xxxx';




UPDATE load.batch_load_partition_control SET is_batch_load_partition_processed = 0
WHERE batch_load_control_key IN
(
SELECT batch_load_control_key
FROM load.batch_load_control
WHERE batch_load_key = @batch_load_key
);



UPDATE load.batch_load_control SET is_batch_load_processed = 0
WHERE batch_load_key = @batch_load_key;


SELECT  @batch_load_key=batch_load_key
FROM load.batch_load
WHERE batch_load_name = N'xxxx';

DECLARE @batch_load_control_code NVARCHAR(100);

SELECT @batch_load_control_code = batch_load_control_code
FROM load.batch_load_control
WHERE batch_load_key = @batch_load_key;



EXEC base.usp_load_fact_table @batch_load_control_code=@batch_load_control_code,@disable_output=1;

SELECT * from
load.batch_load_partition_control WHERE batch_load_control_key IN
(
SELECT batch_load_control_key
FROM load.batch_load_control
WHERE batch_load_key in (SELECT batch_load_key
FROM load.batch_load
WHERE batch_load_name = N'xxxx')
) AND is_batch_load_partition_processed = 1;

由於我正在測試的 PK 違規場景,我的 EXEC 步驟預計會失敗。 以下 select 語句將告訴我我的方案是否按照預期失敗。 但是我的結果窗口在執行步驟失敗后沒有顯示選擇的結果。 您能否指導我如何讓選擇返回行? 提前致謝。

正如 Stu 建議的那樣,我嘗試添加 try/catch 塊,它適用於我的場景。

BEGIN TRY
EXEC base.usp_load_fact_table @batch_load_control_code=@batch_load_control_code,@disable_output=1;
END TRY
BEGIN CATCH
SELECT * from
load.batch_load_partition_control WHERE batch_load_control_key IN
(
SELECT batch_load_control_key
FROM load.batch_load_control
WHERE batch_load_key in (SELECT batch_load_key
FROM load.batch_load
WHERE batch_load_name = N'xxxx')
) AND is_batch_load_partition_processed = 1;
END CATCH

暫無
暫無

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

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