[英]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.