如何 运行 下面的 PL/SQL 代码来自 groovy againts oracle 数据库

How to run below PL/SQL code from groovy againts oracle database

下面是 PL/SQL 我想从 groovy 程序针对 oracle 数据库 运行 的代码。

BEGIN
   EXECUTE IMMEDIATE 'DROP TABLE Employee';
EXCEPTION
   WHEN OTHERS THEN
      IF SQLCODE != -942 THEN
         RAISE;
      END IF;
END;
/

我怎样才能得到它。我已经设置好所有东西,比如从我的 groovy 程序连接到 oracle 数据库。 我想做如下事情:

sql = Sql.newInstance(url, username, password, driver)
String plSql="BEGIN\n" +
        "   EXECUTE IMMEDIATE 'DROP TABLE Employee';\n" +
        "EXCEPTION\n" +
        "   WHEN OTHERS THEN\n" +
        "      IF SQLCODE != -942 THEN\n" +
        "         RAISE;\n" +
        "      END IF;\n" +
        "END;\n" +
        "/"

sql.execute(plSql)

来自评论的错误日志

下面是我得到的错误...

Jun 29, 2015 9:05:52 PM groovy.sql.Sql execute WARNING: Failed to execute: BEGIN EXECUTE IMMEDIATE 'DROP TABLE Employee'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END; / because: ORA-06550: line 9, column 1: PLS-00103: Encountered the symbol "/" The symbol "/" was ignored. Caught: java.sql.SQLException: ORA-06550: line 9, column 1: PLS-00103: Encountered the symbol "/" The symbol "/" was ignored

使用call方法执行一个PL/SQL块。 上面提到不要加斜杠,而是用分号结束。

groovyCon.call("""BEGIN
  EXECUTE IMMEDIATE 'DROP TABLE Employee';
EXCEPTION
   WHEN OTHERS THEN
      IF SQLCODE != -942 THEN
         RAISE;
      END IF;
END;""")

此外,您还可以从 Groovy 多行字符串 (""") 中获益,它允许在数据库和 Groovy 之间直接剪切和粘贴 PL/SQL 块。