在OriendDB 3.0之前,我们以以下形式执行批处理脚本:
BEGIN
let x = SELECT * FROM MyClass
COMMIT
return $x;
使用以下命令:
ODatabaseDocument myDb;
myDb.command(new OCommandScript("sql", batchCommand)).execute(params);
在OrientDB 3.0中,ODatabaseDocument.command(OCommandRequest iCommand)被标记为已弃用,并指示用户使用仅接受字符串的命令/执行方法。但是,似乎命令或执行方法的建议版本实际上不允许您运行这种性质的脚本。尝试以下方法:
myDb.execute("sql", batchCommand, params)
导致OCommandSQLParsingException("遇到"" BEGIN""在第2行,第1列。")。传递"脚本" in作为执行语言也会产生相同的结果。使用命令(string,params)方法会产生稍微不同的语法错误。
我们忽略了一些明显的API来执行这些类型的脚本吗?任何指针都会非常感激。
答案 0 :(得分:0)
事实证明这个问题确实错过了分号。正如批处理脚本中所解释的here命令需要用分号分隔。这甚至适用于BEGIN和COMMIT语句。更新脚本后,execute命令按预期工作。如果其他任何人遇到同样的问题,我会把它留在这里。