Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Dapper和Oracle参数化查询-ORA-01036:非法变量名称/编号_C#_Oracle_Dapper - Fatal编程技术网

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

C# Dapper和Oracle参数化查询-ORA-01036:非法变量名称/编号,c#,oracle,dapper,C#,Oracle,Dapper,我现在正试着穿上整洁的衣服。以下代码可以完美地工作: using (var conn = new OracleConnection( "Uid=dbusr;Pwd=dbusrpwd;Server=oraserver;")) { var col = conn.Query<User>( "SELECT * FROM Users WHERE UserName = 'uid01'" , null)

我现在正试着穿上整洁的衣服。以下代码可以完美地工作:

using (var conn = 
    new OracleConnection(
        "Uid=dbusr;Pwd=dbusrpwd;Server=oraserver;"))
{
    var col = 
        conn.Query<User>(
        "SELECT * FROM Users WHERE UserName = 'uid01'"
        , null)
        .ToList();
}
使用(变量连接=
新OracleConnection(
“Uid=dbusr;Pwd=dbusrpwd;Server=oraserver;”)
{
变量列=
控制查询(
“从用户名为'uid01'的用户中选择*”
,空)
.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();
}
使用(变量连接=
新OracleConnection(
“Uid=dbusr;Pwd=dbusrpwd;Server=oraserver;”)
{
变量列=
控制查询(
“从用户名=@Id的用户中选择*”
,新的{Id=“uid01”})
.ToList();
}
我收到以下错误:

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


我四处搜索,但没有发现类似的错误报告;似乎我错过了一些非常明显的东西,但唉,我的咖啡用完了。如果有任何提示,我将不胜感激。

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

,这正是我所说的非常明显的事情。非常感谢,马克-工作得很有魅力@小野我很高兴你能得到一个相当快的回答;我去过那里。。。(有时感觉我在那里呆了好几天)你是说我的速度太快了。再幸运不过了;再一次,谢谢!