gpt4 book ai didi

java - 如何在 Java 中执行 Oracle PLSQL block

转载 作者:行者123 更新时间:2023-11-29 07:38:41 25 4
gpt4 key购买 nike

我有一个这样的 PL/SQL block :

BEGIN
FOR i IN 1..100
LOOP
UPDATE rptbody
SET comments = 'abcs';
WHERE (rptno> 100 and rptno < 200) and ROWNUM<2;
COMMIT;
END LOOP;
END;

此 block 需要使用 Oracle JDBC 执行。我尝试了以下方法:

  • 尝试使用 Statement 对象执行此操作。由于这是一个 block ,所以引发了一个异常,说这不是一条sql语句

  • 这可以拆分成 sql 语句,但我有 100 多个这样的 block ,这对代码来说会很麻烦,所以考虑将其留给 sqlplus。

  • 尝试使用 CallableStatement,但效果不佳。

任何解决方案都会有所帮助。

最佳答案

这与您如何运行它无关。 PL/SQL 语法无效。在 WHERE 子句之前的更新子句之后有一个 ;:

BEGIN
FOR i IN 1..100
LOOP
UPDATE rptbody
SET comments = 'abcs' --<<< no semicolon here!!
WHERE (rptno> 100 and rptno < 200) and ROWNUM<2;
COMMIT;
END LOOP;
END;

上面的代码可以这样运行:

String sql = "... the PL/SQL block ...";
Statement stmt = connection.createStatement();
stmt.execute(sql);

关于java - 如何在 Java 中执行 Oracle PLSQL block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32614986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com