24

我是评估员,但我已经遇到了一些问题。

我正在尝试这样做

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

它在 SqlMapper.cs 的第 393 行抛出 ORA-00936: missing expression OracleException

using (var reader = cmd.ExecuteReader())

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

该查询在 sqldeveloper 中没有问题。我正在使用 Oracle.DataAccess 程序集 2.112.2.0

4

3 回答 3

45

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

于 2011-08-18T13:49:03.147 回答
6

是的,如果我们尝试在 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" } });
于 2013-12-19T17:59:02.567 回答
3

它也适用于 IN 列表:

var partialList = new List();

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

于 2018-03-15T14:49:50.510 回答