#oracle #stored-procedures #dapper
#Oracle #хранимые процедуры #dapper
Вопрос:
Мне нужно выполнить хранимую процедуру ctx_ddl.sync_index
в базе данных Oracle. В программе запросов это работает;
EXECUTE ctx_ddl.sync_index('MyIndex');
Когда я пытаюсь запустить в dapper со следующим;
using var connect = new OracleConnection(conString);
var results = connect.Execute("ctx_ddl.sync_index", "MyIndex", commandType: CommandType.StoredProcedure);
Это дает мне следующую ошибку:
ORA-06550: строка 1, столбец 7: PLS-00306: неправильный номер или типы аргументов при вызове ‘SYNC_INDEX’
Что я делаю не так?
Ответ №1:
Вместо того, чтобы передавать «MyIndex» в виде строки, попробуйте это:
using var connect = new OracleConnection(conString);
var p = new OracleDynamicParameters();
p.Add("THENAMEOFYOURPARAMETER", dbType: OracleDbType.THETYPEOFYOURPARAMETER, direction: ParameterDirection.Input);
var results = connect.Execute("ctx_ddl.sync_index", param:p, commandType: CommandType.StoredProcedure);
Комментарии:
1. Глупый вопрос: в каком пространстве имен / NuGet есть OracleDynamicParameters?
2. Не глупо.. Должно быть просто in
Dapper
, но у меня здесь нет VS для проверки.3. Так что его нет в Dapper, но я нашел его в Dapper. Oracle. Динамический параметр. Проблема в том, что она не обновлялась с 2018 года. Я использую .NET Core, и это вызывает проблему с версией Oracle. ManagedDataAccess.Core