2016-09-25 48 views
0

我休息一下。如果存在teradata表,我需要檢查 。如果是,那麼刪除的記錄 如果沒有則創建該表按DDLTeradata BTEQ有條件不按預期方式工作

的問題是,..both的語句獲取執行和條件,我想運行並不成功運行

select * from doc.tablesV 
where database = DATABASE_NAME 
and table = TABLE_NAME ; 

.if activitycount = 1 then .GoTo del_tab ; 
.if activitycount = 0 then .GoTo create_tab ; 
.LABEL del_tab ; 
delete table DATABASE_NAME.TABLE_NAME; 
.LABEL create_tab; 
create multisite table ...; 

在日誌中我看到這則消息 第一次運行時(沒有表存在)執行

activity count =0 
.label del_tab 
skipped 
.label create_tab 
Go to create_tab 

del_tab命令(雖然它說,跳過) 和失敗(因爲沒有表存在)

是否有我的條件邏輯什麼錯誤?或者是否對BTEQ中的條件邏輯有任何限制? 謝謝 Pari

回答

1

而不是活動計數,使用count(1)來檢查記錄是否存在於dbc.tables中。然後繼續你的邏輯。下面的一段代碼應該可以工作。

INSERT INTO table_cnt 
(
cnt_var 
) 
select count(1) from doc.tablesV 
where database = DATABASE_NAME 
and table = TABLE_NAME ; 

.if cnt_var = 1 then .GoTo del_tab ; 
.if cnt_var = 0 then .GoTo create_tab ; 
.LABEL del_tab ; 
delete table DATABASE_NAME.TABLE_NAME; 
.LABEL create_tab; 
create multisite table ...;