Skip to main content

query

Macro query 

Source
macro_rules! query {
    ($query:expr) => { ... };
    ($query:expr, $($args:tt)*) => { ... };
}
Available on crate feature macros only.
Expand description

Compile-time checked SQL query for MSSQL via ODBC.

The SQL is sent to a live database at compile time so column names and types are verified. The returned row lets you access columns as named fields with correct Rust types — no runtime mapping needed.

§Without parameters

let mut conn = MssqlConnection::connect("…").await?;

let row = sqlx_mssql_odbc::query!("SELECT id, name, email FROM users WHERE id = 1")
    .fetch_one(&mut conn)
    .await?;

// Fields are checked at compile time — typos become compile errors!
println!("{} <{}>", row.name, row.email.unwrap_or_default());

§With parameters

Bind parameters with @p1, @p2, etc. The macro infers types from the Rust expressions:

let user_id = 42;
let rows = sqlx_mssql_odbc::query!(
    "SELECT id, name FROM users WHERE id = @p1 OR name LIKE @p2",
    user_id,
    "%Smith%"
)
    .fetch_all(&mut conn)
    .await?;

§Inferring multiple result columns

let row = sqlx_mssql_odbc::query!("SELECT COUNT(*) AS count, AVG(age) AS avg_age FROM users")
    .fetch_one(&mut conn)
    .await?;
println!("{} users, average age {}", row.count, row.avg_age);

Requires the macros feature and a live database (or a prepared offline cache via cargo sqlx prepare).