dapper и запущенная хранимая процедура ctx_ddl.sync_index

#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