Skip to main content

rbdc_oracle/statement/
mod.rs

1use crate::{OracleColumn, OracleTypeInfo};
2use either::Either;
3use std::sync::Arc;
4
5mod handle;
6mod r#virtual;
7
8pub(crate) use handle::OracleStatementHandle;
9pub(crate) use r#virtual::VirtualStatement;
10
11#[derive(Debug, Clone)]
12pub struct OracleStatement {
13    pub(crate) sql: String,
14    pub(crate) parameters: usize,
15    pub(crate) columns: Arc<Vec<OracleColumn>>,
16}
17
18impl OracleStatement {
19    pub fn to_owned(&self) -> OracleStatement {
20        OracleStatement {
21            sql: self.sql.clone(),
22            parameters: self.parameters,
23            columns: Arc::clone(&self.columns),
24        }
25    }
26
27    pub fn sql(&self) -> &str {
28        &self.sql
29    }
30
31    pub fn parameters(&self) -> Option<Either<&[OracleTypeInfo], usize>> {
32        Some(Either::Right(self.parameters))
33    }
34
35    pub fn columns(&self) -> &[OracleColumn] {
36        &self.columns
37    }
38}