直接原因就是在脚本上下文中,使用new_tbl时未定义,可以如下修改:
假如我们在做数据分析的工作,使用解释型的语言会比较好,开发迭代比较快,解释型的语言在执行代码的时候有两种策略:
1. 一行行执行,这种有个弊端就是万一我中间有个编写错误,前面的就白跑了
2. 整体检查再执行,这样的话可以节省一些不必要的失败而造成的时间损失
dolphindb 脚本用的是2
def existsVariable(varName){
return objs(true).name.find(varName)>=0
}
drop table if exists new_tbl;
existsVariable(`new_tbl)
// 创建一个现有的表
existingTable = table(100:0, `time`symbol`price, [TIMESTAMP, SYMBOL, DOUBLE])
// 向现有表中插入数据
insert into existingTable values (2022.01.01T10:00:00, `AAPL, 150.0)
insert into existingTable values (2022.01.01T10:01:00, `AAPL, 151.0)
insert into existingTable values (2022.01.01T10:02:00, `AAPL, 152.0)
// 检查内存表是否存在
existsVariable(`new_tbl)
if (existsVariable(`new_tbl)) {
print "ok"
// 内存表存在,将现有表的第一行插入内存表中
insert into new_tbl select * from existingTable limit 1
} else {
// 内存表不存在,使用现有表创建内存表
//new_tbl = select * from existingTable where 1=2
new_tbl = select * from existingTable limit 1
delete from new_tbl
insert into new_tbl select top 1 * from existingTable
}
// 查询新内存表的数据
select * from new_tbl
上述脚本一步步执行可以成功、但是一起执行就报错:
Can't recognize table new_tbl
这是什么原因,以及如何解决?
直接原因就是在脚本上下文中,使用new_tbl时未定义,可以如下修改: