Не удалось выполнить хранимую процедуру в другой базе данных? - PullRequest
0 голосов
/ 04 мая 2009

Хранимая процедура, которая прекрасно работает с базой данных разработки, но не выполняется в рабочей базе данных? Возвращена ошибка: «PLS-00306: неверный номер или типы аргументов при вызове <procedure naeme>»

база данных VC ++ оракул

Закрыт: ошибка произошла из-за неправильного синонима.

Ответы [ 2 ]

0 голосов
/ 05 мая 2009

Вы должны предоставить больше информации. По крайней мере, это «базовые» типы данных (NUMBER, DATE, VARCHAR2 и т. Д.) Или у вас есть экзотические (XMLTYPE, geo, пользовательские типы?) использовать SQL * Plus, подключиться к схеме в обеих базах данных и сделать DESC Опубликуйте результаты, чтобы мы могли их увидеть.

0 голосов
/ 04 мая 2009

Эта ошибка не имеет ничего общего с проблемой в процедуре, которую вы выполняете. Эта ошибка связана с тем, как вы называете ее в одной базе данных по сравнению с другой. Именно вызывающая сторона в DEV отправляет правильную комбинацию параметров и типов параметров. Логика, которая в конечном итоге вызывает процедуру в PROD, отправляет другую комбинацию параметров.

Сначала проверьте спецификацию процедуры в обеих базах данных, чтобы убедиться, что она ДЕЙСТВИТЕЛЬНО одинакова. Ищите различия в параметрах, типах данных или любую разницу в DEFAULT NULL и т. П.

Затем проверьте логику, которая вызывает фактическую процедуру между базами данных. Обычно будет отсутствовать один из параметров или тип данных будет неправильным. Порядок ваших параметров также важен, если вы не используете именованную запись.

Если в конечном итоге вы уверены, что все одинаковы, то, возможно, это связано с данными, один из входящих параметров не имеет значения, и ваши драйверы C ++ не вызывают процедуру одинаково.

Это серьезная и ясная ошибка, и она говорит вам, что в конечном счете есть разница в том, как она называется. Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...