Dapper和Oracle参数化查询-ORA-01036:非法的变量名称/编号

本文关键字:非法 变量名 编号 -ORA-01036 Oracle 参数 查询 Dapper | 更新日期: 2023-09-27 18:22:19

我目前正在试用Dapper。以下代码完美工作:

using (var conn = 
    new OracleConnection(
        "Uid=dbusr;Pwd=dbusrpwd;Server=oraserver;"))
{
    var col = 
        conn.Query<User>(
        "SELECT * FROM Users WHERE UserName = 'uid01'"
        , null)
        .ToList();
}

但是,如果我不使用硬编码的参数,而是尝试通过一个参数化查询和一个匿名类来传递它,比如:

using (var conn = 
    new OracleConnection(
        "Uid=dbusr;Pwd=dbusrpwd;Server=oraserver;"))
{
    var col = 
        conn.Query<User>(
        "SELECT * FROM Users WHERE UserName = @Id"
        , new { Id = "uid01" })
        .ToList();
}

我收到以下错误:

ORA-01036:非法的变量名称/编号

我在SO周围搜索,但没有发现类似的错误报告;我似乎错过了一些显而易见的东西,但唉,我的咖啡没了。如果有任何提示,我将不胜感激。

Dapper和Oracle参数化查询-ORA-01036:非法的变量名称/编号

在oracle的SQL风格中,命名参数以:为前缀。尝试:Id而不是@Id