cod*_*441 1 java database oracle
StringBuffer sql = new StringBuffer("{ call ? := mailmerge_package.getLetters(?, ?, ?)}");
Run Code Online (Sandbox Code Playgroud)
我知道它就像一个sql语句,但在SQL中没有'call'这样的东西.
有人可以向我解释它的含义以及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);
Run Code Online (Sandbox Code Playgroud)
这看起来像您可以传递给Oracle的SQL.
如果是这样,那么这可以用于调用返回值的Oracle函数mailmerge_package.getLetters.该值由JDBC和Db层解析以替换第一个?,这可以读入Java变量.Oracle函数需要3个参数(括号中的3?)
| 归档时间: |
|
| 查看次数: |
183 次 |
| 最近记录: |