OrientDB 中的批处理脚本执行 3.x
Batch Script Execution in OrientDB 3.x
在 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("Encountered " "BEGIN "" 在第 2 行,第 1 列。")。将 "script" 作为执行语言传入也会产生相同的结果。使用 command(string, params) 方法会产生稍微不同的语法错误。
是否有一些明显的 API 我们忽略了执行这些类型的脚本?任何指针将不胜感激。
原来问题确实是缺少分号。正如所解释的 here 批处理脚本中的命令需要用分号分隔。这甚至适用于 BEGIN 和 COMMIT 语句。脚本更新后,执行命令按预期工作。我会把它留在这里,以防其他人遇到同样的问题。
在 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("Encountered " "BEGIN "" 在第 2 行,第 1 列。")。将 "script" 作为执行语言传入也会产生相同的结果。使用 command(string, params) 方法会产生稍微不同的语法错误。
是否有一些明显的 API 我们忽略了执行这些类型的脚本?任何指针将不胜感激。
原来问题确实是缺少分号。正如所解释的 here 批处理脚本中的命令需要用分号分隔。这甚至适用于 BEGIN 和 COMMIT 语句。脚本更新后,执行命令按预期工作。我会把它留在这里,以防其他人遇到同样的问题。