Почему Dapper генерирует исключение OracleException при выполнении запроса или команды с параметрами? - PullRequest
15 голосов
/ 10 августа 2011

Я оцениваю безумно, но у меня уже возникли некоторые проблемы.

Я пытаюсь сделать это

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

Выдает ORA-00936: отсутствует выражение OracleException в строке 393 в SqlMapper.cs

using (var reader = cmd.ExecuteReader())

Когда я удаляю параметр, я получаю всю таблицу в переменную результата.

Запрос работает без проблем в sqldeveloper. Я использую Oracle.DataAccess Assembly 2.112.2.0

Ответы [ 3 ]

26 голосов
/ 18 августа 2011

Я думаю, что у oracle есть другая схема для именованного параметра, вы пробовали :a вместо @a?

4 голосов
/ 19 декабря 2013

Да, он работает с ":", если мы пытаемся вставить записи в таблицу базы данных оракула.

Просто попробуйте так:

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 голосов
/ 15 марта 2018

Также работает со списком IN:

varpartList = new List ();

var list = await db.QueryAsync ("выберите bla1, blah2 ОТ таблицы WHERE stringcolumn1 IN: ListofValues ​​", new {ListofValues ​​= частичный список});

...