我是评估精巧的但是我已经遇到了一些问题。
我正在尝试这样做
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
答案 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});