Я знаю, что об этом спрашивали до , но эти решения, похоже, не работают со мной.
В настоящее время я пытаюсь сделать это:
- Создайте строку сценария «CREATE PROCEDURE» для oracle
- . Создайте команду SQL, используя корпоративную библиотеку 5.0, и передайте эту строку в качестве параметра
- Сохраните процедуру в базе данных oracle
Так что пункт 3, похоже, работает до сих пор, если я открою SQL Developer и разверну список дерева процедур, тогда я смогу увидеть процедуру, но с красным кружком, что означает, что она имеет ошибки компилятора, хотя и выполняет тот же код, которыйдовольно маленький, в окне запросов SQL Developer работает нормально и компилирует его.Я не уверен, что в SQL Developer что-то скрыто происходит, потому что запуск этого скрипта «CREATE PROCEDURE» не выдает никакой ошибки, я могу затем увидеть и выполнить процедуру, но не так, как это делается на C #.
Я прочиталв ссылке, размещенной в начале этого, я должен вызывать IDBCommand.Prepare()
, но этот метод уместен только в том случае, если ваш SQLCommand.CommandType имеет тип StoredProcedure, и поскольку я на самом деле не вызываю процедуру, а выполняю чистый sql для СОЗДАНИЯ процедурытогда это не сработает, тем не менее, я просто ради тестирования создал новую команду, которую я назначил StoredProcedure, а затем вызвал метод Prepare () для этой команды, наконец, метод ExecuteNonQuery()
, который выдает исключениеобъект (хранимая процедура) недоступен, что имеет смысл, поскольку он не был скомпилирован ...
Итак, мне интересно, знает ли кто-нибудь, как можно создать процедуру и скомпилировать ее из C #, мыв настоящее время используют корпоративную библиотеку, но я бы не отказалсяng "что-то напрямую провайдеру оракула, пока он работает.
Кстати, прежде чем сказать мне, что создание процедуры из кода - плохая практика, я говорю вам, что, к сожалению, это проект клиента, и у нас не былоПринятие решений, на самом деле мы пытаемся перенести эту вещь с SQL Server на Oracle.