我选中了下面这两行代码一起执行,
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")]"
逐行执行没有问题,一起执行就会抛异常。请问这是什么原因造成的?
一般的脚本语言都是逐条解释执行的。但这容易导致一个问题,运行时出现语法错误。所以DolphinDB database运行时,会对一段脚本先进行整体解析,如果有语法问题,譬如变量未定义,函数不存在,函数参数个数不正确等问题,直接报syntax error。如果没有问题,开始逐条执行。DolphinDB不一样,是先解析所有脚本,列出所有变量。然后再开始运行。
问题中的第一个语句undef all,是一个函数调用,它是在运行时执行,而不是在解析时执行。所以在运行的时候,把定义的变量全部删除了,导致运行后面的语句时出现异常。可以用go语句把程序分成多个代码块,让系统会分段解析并执行代码块。