Как вернуть результаты запроса Oracle в основную функцию Rust? - PullRequest
0 голосов
/ 22 октября 2019

Я использую ящик Oracle для подключения к базе данных Oracle, которая работает. Я создал дополнительную функцию для передачи схемы, uid, пароля и оператора SQL. Я не могу заставить эту функцию возвращать набор результатов.

extern crate oracle;

use oracle::{Connection, Version};

fn oracle_connect(uid: &str, pass: &str, server: &str, sql: &str) -> oracle::ResultSet<&T> {
    let client_ver = Version::client().unwrap();
    let conn = Connection::connect(uid, pass, server).unwrap();
    let (server_ver, banner) = conn.server_version().unwrap();
    let mut stmt = conn.prepare(sql, &[]).unwrap();
    let rows = stmt.query(&[]).unwrap();
}

fn main() {
    let mut sql_result = oracle_connect("test", "test", "SID", "select * from OPTIONS");
    println!("{:?}", sql_result);
}

Я получаю следующие ошибки: '^^ undeclared life' или 'неправильное число аргументов типа'. Я ожидаю получить результаты запроса или строки назад.

Ответы [ 2 ]

1 голос
/ 22 октября 2019

В вашем коде много ошибок. ResultSet ожидает 2 общих параметра: один срок службы и один тип. query возвращает oracle::Result<ResultSet<Row>>, поэтому ваш код должен выглядеть следующим образом:

use oracle::{Connection, ResultSet, Row};

fn oracle_connect(uid: &str, pass: &str, server: &str, sql: &str) -> oracle::Result<ResultSet<Row>> {
    let conn = Connection::connect(uid, pass, server)?;
    let mut stmt = conn.prepare(sql, &[])?;

    stmt.query(&[])
}
0 голосов
/ 28 октября 2019

Сопровождал хранителя ящика Оракула. Этот код работает, но неэффективен.

use oracle::{Connection, Row};

fn oracle_connect(uid: &str, pass: &str, server: &str, sql: &str) -> 
oracle::Result<Vec<Row>> {
    let conn = Connection::connect(uid, pass, server)?;
    let mut rows = Vec::new();
    for row_result in conn.query(sql, &[])? {
        rows.push(row_result?);
    }
    Ok(rows)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...