2016-09-25 89 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 ...;