如何从 JDBC 创建或替换 Oracle 中的过程?

Posted

技术标签:

【中文标题】如何从 JDBC 创建或替换 Oracle 中的过程?【英文标题】:How to create or replace a procedure in Oracle from JDBC? 【发布时间】:2012-04-24 02:31:08 【问题描述】:

如何在 JDBC 中创建或替换过程? 我在 oracle 中创建了该过程,但无法从 Java 中替换该过程。

我有以下,但它不起作用:

Statement stmt0 = conn.createStatement();
String query0 =
"CREATE OR REPLACE PROCEDURE my_proc " +
//blah blah blah
//blah blah blah
//blah blah blah
"END; " +
". " +
"run; ";
stmt0.execute(query0); 

从在线教程中,我看到我应该使用类似的东西: cstmt = conn.prepareCall (SQL); 但我一直无法让它工作。

如果你想看更多我的代码,我会提供。

【问题讨论】:

“.”和“run;”是什么意思? 【参考方案1】:

首先,你可以这样做。

您想从 jdbc 开始准备和执行。

其次,您需要用“.”和“run;”来切断最后一行,它们看起来像是直接来自 SQL*Plus。

请注意,您没有在 Java 字符串中添加任何换行符,但这无关紧要。您似乎添加了必要的尾随空格。

我建议在执行之前记录或 system.out.println 字符串。

目前没有 DBMS,但应该类似于

String sqlproc = 
    "CREATE OR REPLACE PROCEDURE FRED IS \n" +
    "BEGIN NULL; END FRED;";

System.out.println ("proc code: " + sqlproc);
Statement stmt = conn.prepareStatement (sqlproc);
stmt.execute();

【讨论】:

感谢您的帮助。不幸的是,我仍然没有任何成功。似乎 java 只是跳过了这部分代码。该过程确实有效,我在 SQLPlus 中运行它。我一定是在 Java 代码中遗漏了一些东西。

以上是关于如何从 JDBC 创建或替换 Oracle 中的过程?的主要内容,如果未能解决你的问题,请参考以下文章

Oracle库采用的是ascii编码,也就是英文字符集库。java通过jdbc查询出来如何转码?

如何使用 jdbc 从 Oracle 中的结果集中获取模式名称?

AWS Glue to Redshift:是否可以替换,更新或删除数据?

如何解决从 oracle 11g jdbc 7/14 jdk 1.7 中的读取调用中得到减一?

如何在 JDBC 数据源级别限制从 Oracle 返回的行数?

oracle有没有方法把数据库表中的字段的所有数据中的某个字母或数字修改或替换