当我运行带参数的查询或命令时,为什么Dapper会抛出OracleException?

时间:2011-08-10 14:47:08

标签: oracle exception orm oracle11g dapper

我是评估精巧的但是我已经遇到了一些问题。

我正在尝试这样做

using (IDbConnection connection = GetConnection())
{
    connection.Open();
    var result = connection.Query(
        "select * from myTable where ID_PK = @a;", new { a = 1 });
}

它抛出一个ORA-00936:在SqlMapper.cs的第393行缺少表达式OracleException

using (var reader = cmd.ExecuteReader())

当我删除参数时,我将整个表放入结果变量。

查询在sqldeveloper中没有问题。我正在使用Oracle.DataAccess Assembly 2.112.2.0

3 个答案:

答案 0 :(得分:26)

我认为oracle对命名参数有不同的架构,您是否尝试:a而不是@a

答案 1 :(得分:4)

是的,如果我们尝试在oracle数据库表中插入记录,它与“:”一起使用。

试试这样:

var count = connection.Execute(@"INSERT INTO COMPANY_USER(UserId , UserName) values (:UserId, :UserName)", new[] { new { UserId = 1, UserName = "Sam" }, new { UserId = 2, UserName = "Don" }, new { UserId = 3, UserName = "Mike" } });

答案 2 :(得分:2)

它也适用于IN列表:

var partialList = new List();

var list =等待db.QueryAsync("选择bla1,blah2 FROM tablename WHERE stringcolumn1 IN:ListofValues",new {ListofValues = partialList});