Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从groovy againts oracle数据库运行低于PL/SQL的代码_Oracle_Groovy - Fatal编程技术网

如何从groovy againts oracle数据库运行低于PL/SQL的代码

如何从groovy againts oracle数据库运行低于PL/SQL的代码,oracle,groovy,Oracle,Groovy,下面是我想从groovy程序针对oracle数据库运行的PL/SQL代码 BEGIN EXECUTE IMMEDIATE 'DROP TABLE Employee'; EXCEPTION WHEN OTHERS THEN IF SQLCODE != -942 THEN RAISE; END IF; END; / 我怎么能得到那个。我已经完成了一切设置,比如从groovy程序连接到oracle数据库。 我想做如下事情: sql = Sql.n

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

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块。

是否尝试运行该程序?发生了什么?下面是我收到的错误…2015年6月29日9:05:52 PM Groovy.SQL.SQL执行警告:执行失败:开始立即执行“DROP TABLE Employee”;当其他人执行时异常,如果SQLCODE!=-942N RAISE;END IF;END;/cause:ORA-06550:第9行,第1列:PLS-00103:遇到符号“/”被忽略。捕获:java.sql.SQLException:ORA-06550:第9行,第1列:PLS-00103:遇到符号“/”被忽略。如错误所示,删除结尾“/“这不是通过直接API调用需要的,但只有在作为脚本运行时才需要。@Mukesh Singh:请编辑问题以包含更多详细信息。我编辑了你的问题并从评论中删除了信息。请查看常见问题解答。如果下面的答案有用,请接受/投赞成票。