这个问题的原因是,输入的参数名称中有一个:tablename
在下面的遍历的时候,也使用了tablename
for(tablename in tbls){ print(tablename)}
这是不允许的,当然我们的提示信息也有点不明确,关于这点,正在修复中,预计将在下个版本(2.00.9)中优化。
自定义了一个函数如下:
def loopTables(dt, tm ,seqno, dfspath, tablename ,mutable tmCol ,mutable seqCol ){ if(NULL == tmCol) tmCol = "tserial" if(NULL == seqCol) seqCol = "seqno" print("delete specific rows done!") dbs = "dfs:/"+getAllDBs().keys() for(dbpath in dbs){ print(dbpath) tbls = getTables(database(dbpath)) print(tbls) for(tablename in tbls){ print(tablename) colNames = loadTable(dbpath, tablename).schema().colDefs.name if(in(tmCol, colNames) && in(seqCol, colNames)){ print(dbpath + ":" + tablename + " begin delete ") }else{ print("no need for delete " + dbpath + ":" + tablename) } } } }
想法是,先遍历库,再遍历表,但是调用函数后报错:tbls => Can't assign an object to an existing constant variable.
但是把代码拉出来执行却没有问题,这是为什么?