java - 这是什么意思? (java,数据库)

标签 java database oracle

 StringBuffer sql = new StringBuffer("{ call ? := mailmerge_package.getLetters(?, ?, ?)}");

我知道它就像一个 sql 语句,但在 SQL 中没有“调用”这样的东西。

谁能给我解释一下这是什么意思,Java 是如何理解它的

编辑:

import oracle.jdbc.driver.OracleTypes;
//omitted code
CallableStatement cs = null;
        ResultSet rs = null;
     StringBuffer sql = new StringBuffer("{ call ? := mailmerge_package.getLetters(?, ?, ?)}");
 try {
            cs = conn.prepareCall(sql.toString());
            cs.registerOutParameter(1, OracleTypes.CURSOR);
            DAOUtils.setLong(cs, 3, checklistAnsMastId);
            DAOUtils.setLong(cs, 2, workEntityId);
            cs.setLong(4, patientId);
            DAOUtils.setLong(cs, 5, encounterId);
            cs.setString(6, encounterType);
            cs.execute();
            rs = (ResultSet)cs.getObject(1);

最佳答案

这看起来像是可以传递给 Oracle 的 SQL。

如果是这样,那么这可以用于调用 Oracle 函数 mailmerge_package.getLetters,它返回一个值。该值由 JDBC 和 Db 层解析以替换第一个 ?,这可以读入 Java 变量。 Oracle 函数有 3 个参数(括号中的 3 个 ?)

关于java - 这是什么意思? (java,数据库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4345018/

相关文章:

c# - 我应该为我的代码使用什么类型的数据库?

oracle - Mybatis BindingException 参数 '__frch_e_0' 未找到

java - Activity 之间的全局对象

php - 使用 PHP 的多层应用程序?

java - 为什么不允许%

php - 在我的 php 项目中哪个更好? 1 个带有多个空字段的表 1 个带有多个空字段的表?

sql - Oracle 记录历史使用截至时间戳在一个范围内

oracle - liferay可以使用公共(public)同义词读取模式吗

java - 使用 openFileOutput 的文件路径

java - 从 IntelliJ 启动时无法激活 Spring boot 配置文件