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/