如何从 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 中的读取调用中得到减一?