Teradata BTEQ有条件不按预期工作

时间:2016-09-25 04:26:28

标签: conditional teradata

我休息一下。我需要检查的地方 如果存在teradata表。如果是,则删除记录 如果否,则按照DDL

创建表

问题是......语句正在执行,我想要运行的条件没有成功运行

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中的条件逻辑是否有任何限制? 谢谢 彩

1 个答案:

答案 0 :(得分: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 ...;