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).