oracle - Oracle JDBC 可调用语句和 getMetadata 计数
问题描述
假设我有一个如下所示的 pl/sql:
final Connection c = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "system", "manager");
String plsql = "" +
" declare " +
" p_id varchar2(20) := null; " +
" l_rc sys_refcursor;" +
" begin " +
" p_id := ?; " +
" ? := 'input parameter was = ' || p_id;" +
" open l_rc for " +
" select 1a id, 'hello' name from dual " +
" union " +
" select 2a, 'peter' from dual; " +
" ? := l_rc;" +
" end;";
CallableStatement cs = c.prepareCall(plsql);
cs.setString(1, "12345");
cs.registerOutParameter(2, Types.VARCHAR);
cs.registerOutParameter(3, OracleTypes.CURSOR);
cs.execute();
这里一切都很好,但我怎么能从中得到一个 metadat.getColumnCount() 呢?
我想达到什么目标?代替:
ResultSet cursorResultSet = (ResultSet) cs.getObject(3);
while (cursorResultSet.next ())
{
System.out.println (cursorResultSet.getString(1) + " " + cursorResultSet.getString(2));
}
我想查找元数据计数并在循环中打印一条记录的所有值,例如:
//伪代码
int x = callablestatement.metadata.count();
String myRecord='';
while (cursorResultSet.next ()){
for(int i=1; i<=x; i++){
myRecord= myRecord+ " " + cursorResultSet.getString(i);
}
}
解决方案
要获取结果集中的列数,需要使用
cursorResultSet.getMetaData().getColumnCount()
推荐阅读
- jquery - 使用 Jquery 3.3.1 完整版而不是 bootstrap 4.3 附带的 slim 版本会返回错误
- redhat - 如何构建 scl,示例是旧的并且 rpmlint 与文档相矛盾?
- node.js - 为什么 find 方法在 Mongoose 中不起作用
- windows - 如何在alienware windows 10系统中安装nvidia docker?
- html - 弹性内的引导最小固定宽度
- flutter - currentuser 如何在flutter中通过fcm向另一个用户发送请求通知?
- python - 在 Windows 10 中运行编译为 exe 的 python 在 Windows 7 中运行
- react-native - 从 Objective-C 文件导航到 Swift UIViewController
- javascript - 在谷歌脚本中将 2 个具有相同行数的可变数据框合并为 1 个单个数据框
- python - IBM Cloud 如何增加并发请求限制