![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Oracle 8 и Oracle 9 [D5]
nomad © (2004-02-03 13:06:00)
Я написал отчет на Fastreport для Oracle 8 там вызываю процедуру у которой OUT параметр курсор, для Oracle 8 все работает, а на 9 пишет Ora06550 wronge number or types in call MyProc
Может кто знает как исправить.
nomad (2004-02-05 11:20:00) [1]
2 Reindeer Moss Eater © (05.02.04 11:15) [52]
я так и хочу попробывать
nomad (2004-02-05 11:18:00) [2]
2Sergey13 © (05.02.04 11:10) [51]
у меня никак не определен тип возвращаемого курсора:)
но ведь работает
Reindeer Moss Eater (2004-02-05 11:15:00) [3]
Короче.
Идем на машину, на которой отчет работает.
Переключаем на этой машине программу на сервер с девяткой.
Если работает, то причина в настройках клиента Оракла на второй машине.
Если не работает - причина в разных процедурах разных курсорах и разных объектах по которым курсор строится.
Такая кофейная гуща как правило эффективна.
Sergey13 (2004-02-05 11:10:00) [4]
2nomad © (05.02.04 10:50) [46]
А какой тип у возврашаемого курсора?
Давно это было, но помнится я делал на 8 примерно так:
cursor tkv is
select * from my_table;
type tkv_rec is ref cursor return tkv%ROWTYPE;
Можно и без описания tkv (у меня в жизни там был сложный селект по нескольким таблам), а дать My_Table%ROWTYPE если по одной таблице.
Reindeer Moss Eater (2004-02-05 11:02:00) [5]
А я понял, что разница в серверах 8 и 9. И поскольку сервера разные, то и процедуры могут отличаться.
Даже если они и отличаются, ошибка рождается не в процедуре, иначе бы она и на сервере не работала.
А она работает там без ошибок ([30])
nomad (2004-02-05 11:00:00) [6]
> Val © (05.02.04 10:54) [48]
Delphi5 , FastReport 2.5 ADoQuery
Val (2004-02-05 10:54:00) [7]
>nomad © (05.02.04 10:30) [43]
скажите, также какими компонентами доступа к БД вы оперируете
Sergey13 (2004-02-05 10:52:00) [8]
2Reindeer Moss Eater © (05.02.04 10:44) [45]
А я понял, что разница в серверах 8 и 9. И поскольку сервера разные, то и процедуры могут отличаться.
nomad (2004-02-05 10:50:00) [9]
вот пакет
package types
as
type cursorType is ref cursor;
end;
скорее всего Reindeer Moss Eater © (05.02.04 10:44) [45] прав
> Если верить автору, то проблема заключается в нестыковке
> клиента и сервера по типам данных на второй машине.
Reindeer Moss Eater (2004-02-05 10:44:00) [10]
Если верить автору, то проблема заключается в нестыковке клиента и сервера по типам данных на второй машине.
Ведь вызов процедуры и работа с курсором в plsl блоке идет нормально и на девятке и на восьмерке.
Sergey13 (2004-02-05 10:41:00) [11]
2Reindeer Moss Eater © (05.02.04 10:26) [41]
Я просто написал свое ИМХО на твой пример. 8-)
2Reindeer Moss Eater © (05.02.04 10:28) [42]
>Ошибка компиляции отпадает.
Я просто переписал выдержку из документации по Ora06550.
2nomad © (05.02.04 10:30) [43]
А где описан твой (cur out types.cursorType)? Такие вещи вроде только в пакете можно делать, где в описательной части описывается собственно курсор(создается тип), а теле процедуры он только заполняется. Может у тебя тут где то нестыковка? Хотя может я и ошибаюсь.
nomad (2004-02-05 10:30:00) [12]
2Sergey13 © (05.02.04 08:50)
ошибка тока одна Ora06550
Reindeer Moss Eater (2004-02-05 10:28:00) [13]
Кстати, у меня по документации (правда на 8.0.4 8-) у этого номера ошибки несколько другое название и толкование (Причина - произошла ошибка компиляции PL/SQL). Почему бы это? Ты все ошибки перечислил?
Ошибка компиляции отпадает. см. совет автору в [29] и его ответ в [30]
Reindeer Moss Eater (2004-02-05 10:26:00) [14]
Sergey13 ©
Я не диагноз ставил.
Еслиимеем к примеруNUMBER(12,0) ....
Sergey13 (2004-02-05 08:50:00) [15]
2Reindeer Moss Eater © (04.02.04 18:55) [39]
Если бы это было так, то ИМХО вылетала бы ощибка приложения, а тут имеем Ora06550, т.е. ошибку сервера.
2nomad © (03.02.04 13:06)
Кстати, у меня по документации (правда на 8.0.4 8-) у этого номера ошибки несколько другое название и толкование (Причина - произошла ошибка компиляции PL/SQL). Почему бы это? Ты все ошибки перечислил?
Reindeer Moss Eater (2004-02-04 18:55:00) [16]
Какой нафик тупик?
Если имеем к примеру NUMBER(12,0) на сервере, и двух клиентов ожидающих ftInteger, но у одного ENABLE INTEGERS = TRUE а у другого наоборот, то у другого будет облом. Точнее не облом, а ftFloat.
Это еще в [4] было сказано.
nomad (2004-02-04 18:50:00) [17]
следствие зашло в тупик
(с моей стороны:))
Val (2004-02-04 18:13:00) [18]
>nomad © (04.02.04 17:24) [36]
ну так скажите, что было, как решили-то?
nomad (2004-02-04 17:24:00) [19]
спасибо за помощь!
Reindeer Moss Eater (2004-02-04 17:16:00) [20]
Ну дык:
1. Разные клиенты Оракла
2. Разные BDE или что там у тебя. С их разными парамерами подключения
3. Разные экземпляры программ.