Closed alessio-zamparelli closed 1 year ago
Hi, i'd like to convert a resultset to a vector of vector by columns without knowing the return type of the query:
let sql = "SELECT * FROM EMPLOYEES"; let mut stmt = conn.statement(sql).build()?; let rows = stmt.query(&[])?; let num_cols = rows.column_info().len(); let mut columns: Vec<Vec<Box<dyn ToSql>>> = Vec::with_capacity(100); for _ in 0..num_cols { columns.push(Vec::new()); } for info in rows.column_info() { println!("{} -> {}", info.name(), info.oracle_type()); } for (row_idx, row_result) in rows.enumerate() { let row = row_result?; for (col_idx, value) in row.sql_values().iter().enumerate() { let value: Box<dyn ToSql> = match value.oracle_type()? { OracleType::Varchar2(_) => Box::new(row.get::<_, String>(col_idx)?), OracleType::Number(..) => Box::new(row.get::<_, i64>(col_idx)?), OracleType::Int64 => Box::new(row.get::<_, i64>(col_idx)?), OracleType::Float(_) => Box::new(row.get::<_, f64>(col_idx)?), OracleType::Date => Box::new(row.get::<_, NaiveDate>(col_idx)?), _ => { println!("Unsupported column type {}", value.oracle_type()?); Box::new("") } }; columns[col_idx].push(value); } }
but give error Error: NullValue
Error: NullValue
See doc for Error::NullValue. Use Option<i64>, Option<f64> and so on.
Error::NullValue
Option<i64>
Option<f64>
Hi, i'd like to convert a resultset to a vector of vector by columns without knowing the return type of the query:
but give error
Error: NullValue