是否可以在teradata中执行多个activitycount检查?

是否可以在teradata中执行多个activitycount检查?,teradata,bteq,Teradata,Bteq,使用bteq脚本,我想删除TPT加载期间创建的临时错误和日志表,即ErrorTable1、ErrorTable2、LogTable 我已经用if-else准备了下面的bteq脚本,如果它存在,它将删除表 .LOGON ${HOST}/${USER},${PASS}; SELECT 1 FROM dbc.TablesV WHERE CONCAT(DataBaseName, '.', TableName) = 'Test.ErrorTable1'; .IF ACTIVITYCOUNT = 0 TH

使用bteq脚本,我想删除TPT加载期间创建的临时错误和日志表,即ErrorTable1、ErrorTable2、LogTable

我已经用if-else准备了下面的bteq脚本,如果它存在,它将删除表

.LOGON ${HOST}/${USER},${PASS};

SELECT 1 FROM dbc.TablesV WHERE CONCAT(DataBaseName, '.', TableName) = 'Test.ErrorTable1';
.IF ACTIVITYCOUNT = 0 THEN GOTO CHECK_1;
DROP TABLE Test.ErrorTable1;


.LABEL CHECK_1;
SELECT 1 FROM dbc.TablesV WHERE CONCAT(DataBaseName, '.', TableName) = 'Test.ErrorTable2';
.IF ACTIVITYCOUNT = 0 THEN GOTO CHECK_2;
DROP TABLE Test.ErrorTable2;


.LABEL CHECK_2;
SELECT 1 FROM dbc.TablesV WHERE CONCAT(DataBaseName, '.', TableName) = 'Test.LogTable';
.IF ACTIVITYCOUNT = 0 THEN GOTO DONE;
DROP TABLE Test.LogTable;


.LABEL DONE;

.LOGOFF
.EXIT

我的问题是,在teradata bteq中,我可以像上面的脚本一样多次使用ACTIVITYCOUNT来检查各种表的存在吗?

当然,AVTIVITYCOUNT会随着每个SQL语句重置。但您可以将逻辑简化为
。如果ACTIVITYCOUNT=0,则删除TABLE Test.ErrorTable2
或使用Storerd过程:感谢fred和Dnoeth纠正之前的错误评论:虽然现在支持
CONCAT
函数,但首选ANSI连接运算符
|
。还请注意(尽管这种情况下不需要)当前版本的BTEQ支持“多指令”
.IF
.ELSEIF
.ELSE
.ENDIF
块(可以嵌套)除了
。IF。。。然后
single instruction syntax。谢谢Fred,你能给我指一些IF、ELSEIF、ELSE等的示例片段吗?在bteq脚本中使用,如果teradata中的bteq支持完整的IF-ELSE-IF,我真的不想做GOTO