Tag: plsql

Spring JDBC模板。 如何获得pl / sql脚本的结果变量

我正在使用NamedParameterJdbcTemplate运行pl / sql脚本。 但我不知道如何获得out变量的值( :id_out )。 提前致谢。 String script = “declare begin if myFunc(:id_in) is null then :id_out := 0; else :id_out := 1; end if; end;”; Map bindVars = new HashMap(); bindVars.put(id_in,1); bindVars.put(id_out,2); jdbcTmpl.execute(script, bindVars, new PreparedStatementCallback() { @Override public Object doInPreparedStatement(PreparedStatement cs) throws SQLException, DataAccessException { cs.execute(); return null; } } );

如何通过hibernate访问pl / sql proc中的out参数

我有一个带有以下签名的pl / sql过程 PROCEDURE pr_log_process_started ( p_process_id IN log_process_status.process_id%TYPE, p_run_id IN OUT log_process_status.run_id%TYPE); 如何通过Hibernate调用此proc并在调用后访问第二个参数的值?

使用JDBC编写带有绑定变量的匿名PL / SQL块

我有一个带有绑定变量的匿名PL / SQL块,我想通过JDBC运行。 PL / SQL块示例: variable v_value number declare v_return varchar2(30); begin :v_value:=300; select ename into v_return from emp where empno=:v_value; end; 相应的Java代码将使用带有“?”的转义语法 设置变量。 所以这个块看起来像这样(如果我错了,请纠正我): String block = “declare v_return varchar2(30);” + “begin” + “? := 300;” + “select ename into v_return from emp where empno = ?;” + “end;” 现在,假设我的变量是一个INPUT参数,我将不得不像这样设置参数: // omitting the […]

从Java调用PLSQL过程

下面是我的Java程序。 我正在调用PLSQL过程来更新Employee名称。 我关闭了PLSQL代码中的提交,以便我可以从Java代码执行提交和回滚。 但即使在我关闭自动提交并进行显式回滚之后,仍然会在表中更新详细信息。 怎么样? 我不知道,请帮忙。 这是我的Java代码。 在PLSQL中,它只读取值并执行更新语句。 没有提交。 public class TestCommit { public static void main(String[] args) throws SQLException, IOException { CallableStatement callableStatement = null; Connection conn = null; try { DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); conn = DriverManager .getConnection(“jdbc:oracle:thin:testuser/testpwd@//testdb:1521/testbx”); conn.setAutoCommit(false); String sql = “{call testpkg.saveemployee(?,?)}”; callableStatement = conn.prepareCall(sql); callableStatement.setString(“name”, “spider”); callableStatement.setString(“id”, “A101”); callableStatement.executeQuery(); conn.rollback(); } catch […]

Tomcat是否使用pl / sql模块的缓存版本?

好想象一下这种情况。 我对pl / sql模块进行了更改,重新编译它,一切都很好。 没有错误。 然后我尝试访问在Tomcat上运行的应用程序的GUI屏幕。 该屏幕调用oracle数据库中的pl / sql模块。 当我提交应该调用pl / sql模块来处理数据的表单时,我收到此错误 ORA-20001: ORA-06508: PL/SQL: could not find program unit being called 我检查了$ USER_OBJECTS中的所有包,并且没有状态为INVALID。 我重新启动了Tomcat,然后它开始工作。 这是否意味着当我第一次重新编译包时,我有效地删除了对Tomcat使用的包的一些缓存引用? 与数据库的连接是通过JDBC和DBCP连接池实现的。 重新编译可能会使连接无效吗?

在PLSQL Oracle中抛出特定的错误消息…在hibernate中捕获?

是否可以在PL / SQL oracle存储过程中抛出特定的错误消息,并在调用时在Hibernate中捕获它?

Java正则表达式的后视组没有明显的最大长度

我要: 当我得到一个大字符串时,我需要使用Java中的正则表达式在其中查找内容,以使用以下公式分隔: 如果一行(在\ n之后)有超过1000个字符,请检查第1000个字符是否包含在奇数’ 。 然后添加一个连续字符串’\ n ||’ 在1000到1001个字符之间 如果1000和1001个字符是”(plsql的转义字符),则将其插入1001和1002之间 无论如何,我做了这个正则表达式: “\n(?[^\n]{1000})(?<=(?\n)(?[^’\n]{0,1001}|[^\n’]{0,1001}'[^\n’]{0,1001}'[^\n’]{0,1001}){0,1001}(?’)(?[^\n’]{0,1001}))(?(?<=')(?!'))" 让我解释一下: “\n(?[^\n]{1000}) –> Newline and 1000 characters (? Let’s look behind to check if we have an odd number of ‘ (?\n) –> Start from new line (? –> All pairs of ‘ [^’\n]{0,1001} –> Eighter 0 ‘ | –> or [^\n’]{0,1001}'[^\n’]{0,1001}'[^\n’]{0,1001}){0,1001} –> […]

statement.execute()在PL / SQL结束时返回Slash错误

执行pl / sql时获取错误: ORA-06550: line 1, column 316: PLS-00103: Encountered the symbol “/” The symbol “/” was ignored. PLSQL示例: DECLARE SQL1 VARCHAR2 (1500); SQL2 VARCHAR2 (1500); BEGIN SQL1 := ‘INSERT INTO das_html_caption VALUES (”test_test”)’; SQL2 := ‘DELETE FROM das_html_caption where wording = ”test_test”’; EXECUTE IMMEDIATE SQL2; EXECUTE IMMEDIATE SQL1; EXECUTE IMMEDIATE SQL2; COMMIT; END; / […]

从PL / SQL调用/使用JMS

是否可以从PL / SQL调用/使用JAVA消息服务(JMS)? 我知道我们可以从pl / SQL调用java,但调用java与调用JMS Queues或JMS Topics不同,因为JMS依赖于JNDI资源命名,当我们使用基于JNDI的资源时,我们首先必须将它们部署在某些J2EE容器中,然后使用它们。 所以调用JMS总是涉及在某个J2EE容器上部署然后利用它的function。 回到我之前提到的问题,我想使用PL / SQL中的JMS以及如何处理部署和基于JNDI的资源。

资金计算,java和Oracle / PL SQL之间的比较使用

在处理货币计算时,您可以根据自己的优势和劣势对Oracle / PL SQL和Java进行比较。 如果您要开发一个应用程序,它将处理大量的金钱计算,您将使用哪两个?为什么? 这个问题不是引起oracle / pl sql和java爱好者之间的争论我只是想知道什么被认为是这种要求的最佳实践或标准方法以及背后的原因。 场景将是: 数据来自数据库(最低Oracle 10g)。 该程序将根据聚合数据(100k-1M)记录计算和生成发票 业务规则非常复杂 业务规则可能每月至少更改一次 计算中将使用几个参考表 该计划将每天运行一次 提前致谢。