Bezdepbonusu7Программирование: статьи и ответы

Вопрос

NHibernate вызывает хранимую процедуру Oracle с префиксом схемы, как?

Автор вопроса: NinerОтветов: 2

У меня есть NHibernate, вызывающая хранимую процедуру в Oracle, работающую в настоящее время. Однако как мне указать префикс схемы в синтаксисе {call} в теге?

Я пытался

<sql-query name="my_sproc">
<return class="my_sproc_class" />
    {call schema2.my_sproc (:p1)}
</sql-query>

Но среда выполнения NHibernate вернулась с тем, что 'schema2' не определена, а 'schema2' - это определенно определенная схема в моей базе данных Oracle.

благодаря.

schemaoraclestored-proceduresnhibernate

Ответы

Ответ 1 · Gary Myers

Могли ли быть привилегии? Процедура может существовать в этой схеме, но у вас может не быть привилегий для ее выполнения или у вас могут быть привилегии через роль, которая не включена.

Могут быть параметры. Если процедура ожидает два параметра (или является функцией), то попытка вызвать ее с одним может получить ошибку "Не существует", когда на самом деле это означает "Нет ни одного, который я мог бы вызвать с одним параметром".

Последний вариант - если в вашей схеме есть пакет с тем же именем, что и у другой схемы. Может случиться с чем-то общим, например "UTILS". Если вы попросите Oracle выполнить UTILS.PROC и у вас есть пакет UTILS, он будет искать в пакете и выдавать ошибку, если не находит ее, даже если существует схема UTILS с процедурой PROC.


Отредактировано для добавления

В этом случае я склоняюсь к проблеме параметров. Пример здесь кажется использовать ? в качестве заполнителя параметра.

Ответ 2 · DanP

Я мог ошибаться здесь, но я думал, что NHibernate требует, чтобы все UDF / SPROCS имели префикс "dbo"; {call dbo.schema2.my_sproc (:p1)} работает?

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы