执行DolphinDB脚本时报错Assignment statement failed

我选中了下面这两行代码一起执行,

undef all 
prices=select * from loadTable("dfs://test_balance","pt")

dolphindb会抛异常 "Assignment statement failed probably due to invalid indices [prices = select * from loadTable("dfs://test_balance", "pt")]"

逐行执行没有问题,一起执行就会抛异常。请问这是什么原因造成的?

请先 登录 后评论

1 个回答

Jason Tang - 时序数据库技术支持

一般的脚本语言都是逐条解释执行的。但这容易导致一个问题,运行时出现语法错误。所以DolphinDB database运行时,会对一段脚本先进行整体解析,如果有语法问题,譬如变量未定义,函数不存在,函数参数个数不正确等问题,直接报syntax error。如果没有问题,开始逐条执行。DolphinDB不一样,是先解析所有脚本,列出所有变量。然后再开始运行。

问题中的第一个语句undef all,是一个函数调用,它是在运行时执行,而不是在解析时执行。所以在运行的时候,把定义的变量全部删除了,导致运行后面的语句时出现异常。可以用go语句把程序分成多个代码块,让系统会分段解析并执行代码块。

undef all 
go;
prices=select * from loadTable("dfs://test_balance","pt")
请先 登录 后评论