【问题标题】:Dapper and Oracle parametrized query - ORA-01036: illegal variable name/numberDapper 和 Oracle 参数化查询 - ORA-01036:非法变量名称/编号
【发布时间】:2014-11-12 01:22:52
【问题描述】:

我目前正在尝试使用 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,没有发现类似的报错;似乎我遗漏了一些非常明显的东西,但可惜 - 我的咖啡用完了。我会很感激任何提示。

【问题讨论】:

    标签: c# oracle dapper


    【解决方案1】:

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

    【讨论】:

    • 这正是我所说的非常明显的事情。非常感谢,马克 - 工作就像一个魅力!
    • @Ono 我很高兴你能得到一个相当快的答案;我去过那里......(有时感觉就像我在那里度过了几天)
    • 你的意思是,速度太快了。没有比这更幸运的了;再次感谢!
    猜你喜欢
    • 2013-01-06
    • 2011-10-05
    • 1970-01-01
    • 2020-07-29
    • 2016-04-03
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多