如何使用Oracle.jl通过for循环索引遍历Oracle查询结果集的行和列
遍历Oracle查询结果集的索引遍历方法
Oracle.query() 方法返回的结果集 rs 是标准DataFrame结构,遵循Julia原生1开始的索引规则,你可以直接用数值索引定位行、列位置,以下是不同场景的实现方式:
- 场景1:按行索引遍历所有行,读取指定列数据
# 行号从1到总行数nrow(rs)遍历 for row_idx in 1:nrow(rs) # 索引1对应ID列,索引2对应SUBJECT列 id = rs[row_idx, 1] subject = rs[row_idx, 2] println("第$(row_idx)行:ID = $id , 科目 = $subject") end
- 场景2:按列索引遍历所有列,读取整列数据
# 列号从1到总列数ncol(rs)遍历 for col_idx in 1:ncol(rs) # 获取当前列的列名 col_name = names(rs)[col_idx] # 获取当前列全部数据 col_data = rs[:, col_idx] println("第$(col_idx)列 列名:$col_name , 列数据:$col_data") end
- 场景3:嵌套循环同时遍历行、列索引,逐单元格读取
# 外层遍历行索引 for row_idx in 1:nrow(rs) println("===== 第$(row_idx)行内容 =====") # 内层遍历列索引 for col_idx in 1:ncol(rs) cell_val = rs[row_idx, col_idx] col_name = names(rs)[col_idx] println("$(col_name) : $cell_val") end end
你可以直接把遍历逻辑插入到原有脚本的查询和关闭连接之间,完整可运行示例如下:
import Oracle global const dbHost = "localhost"; global const dbClientType = "thin"; global const dbName = "xe"; global const dbPort = "1521"; global const dbUserName = "ava"; global const dbUserPassword = "ava"; global const conn_str="//"*dbHost*":"*dbPort*"/"*dbName; conn = Oracle.Connection(dbUserName, dbUserPassword, conn_str); rs=Oracle.query(conn, "SELECT * FROM SUBJECTS"); # 插入遍历逻辑 for row_idx in 1:nrow(rs) id = rs[row_idx, 1] subject = rs[row_idx, 2] println("行索引$row_idx | ID: $id | 科目: $subject") end Oracle.close(conn);
内容的提问来源于stack exchange,提问作者AVA
相关产品推荐
相关产品推荐

