Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];

Вниз

Oracle 8 и Oracle 9   Найти похожие ветки 

 
nomad   (2004-02-03 13:06) [0]

Я написал отчет на Fastreport для Oracle 8 там вызываю процедуру у которой OUT параметр курсор, для Oracle 8 все работает, а на 9 пишет Ora06550 wronge number or types in call MyProc
Может кто знает как исправить.


 
Petr V. Abramov   (2004-02-03 13:13) [1]

А MyProc на 9 случаем не раскомпилировалась:)? STATUS у нее - valid?


 
nomad   (2004-02-03 13:22) [2]

вроде все нормально
а как это проверить?


 
nomad   (2004-02-03 13:31) [3]

Status valid


 
Reindeer Moss Eater   (2004-02-03 14:28) [4]

возвращаемый курсор содержит поля, которые не понимаются клиентом.


 
nomad   (2004-02-03 14:41) [5]

чего то я не опнял как это поля , которые не понимаются клиентом
и как это можно исправить?


 
Val   (2004-02-03 14:47) [6]

тип этого поля у вас на клиенте какой?


 
nomad   (2004-02-03 14:52) [7]

при чем сдесь тип поля .
процедура возвращает любой recordset в виде курсора


 
Reindeer Moss Eater   (2004-02-03 14:56) [8]

Ты наверное будешь удивлен, но в курсоре есть поля.
А у полей есть типы содержащихся в них данных.


 
Val   (2004-02-03 15:08) [9]

>nomad © (03.02.04 14:52) [7]
я неверно выразился - имелся ввиду тип параметра вызываемой процедуры.


 
nomad   (2004-02-04 10:24) [10]

get_scripts_names ( server in VARCHAR2,from_date in date , t_date in date ,cur out types.cursorType )
а type cursorType is ref cursor


 
Val   (2004-02-04 11:32) [11]

>nomad © (04.02.04 10:24) [10]
поймите, проблема на клиенте, ведь на сервере эта процедура наверняка нормально вызывается. Покажите параметры, их типы и вызов процедуры на клиенте.


 
nomad   (2004-02-04 11:38) [12]

вот вызов процедуры на клиенте
begin
get_scripts_names ( "qwe",TO_DATE("2004.02.04 00:00:00", "YYYY.MM.DD HH24:MI:SS"),to_date ("2004.02.04 23:59:59","yyyy.mm.dd hh24:mi:ss"));
end;


 
Val   (2004-02-04 11:42) [13]

так вы вызываете через query? тогда почему не указываете четвертый параметр?


 
Reindeer Moss Eater   (2004-02-04 11:42) [14]

На пальцах.
Процедура возвращает курсор.
Курсор построен селекте чего-то.
Это чего-то имеет свои типы данных, не имеющие никакого отношения к типам параметров процедуры.
С пониманием этих типов на клиенте возникли проблемы.
Так понятно?


 
Reindeer Moss Eater   (2004-02-04 11:45) [15]

Либо переданные параметры в процедуру используются в параметрах курсора и его where с этими параметрами конфликтует


 
nomad   (2004-02-04 11:45) [16]

если указать 4 параметр то command text do not return recordset


 
nomad   (2004-02-04 11:46) [17]

тогда почему на oracle 8 все работает,а на 9 нет


 
Reindeer Moss Eater   (2004-02-04 11:58) [18]

если указать 4 параметр то command text do not return recordset

У процедуры четвертый параметр - со значением по умолчанию.
Если его передать явно, условие where ничего не выбирает. (случай из [16])

Если его не передать, в where передается значение по умолчанию и тип этого умолчания не подходит для условия курсора.

тогда почему на oracle 8 все работает,а на 9 нет
Это как минимум два разных сервера, две разных процедуры и два разных курсора.


 
nomad   (2004-02-04 12:01) [19]

хорошо , но как тогда его передать чтобы не было command text do not return recordset

?


 
Reindeer Moss Eater   (2004-02-04 12:05) [20]

Ты не знаешь как передаются параметры?

Ты не видишь куда именно подставляется четвертый параметр в курсоре?

Ты не можешь определить его значение, которое не вернет пустой датасет?


 
nomad   (2004-02-04 12:18) [21]

как написать вызов этой процедуры в Query чтобы все было правильно?
я не понимаю.


 
Reindeer Moss Eater   (2004-02-04 12:24) [22]

как написать вызов этой процедуры в Query чтобы все было правильно?

А разве уже сейчас что-то неправильно?
Передаешь параметры, курсор строится в соответствии с параметрами, курсор возвращается.


 
nomad   (2004-02-04 12:29) [23]

begin
get_scripts_names ( "qwe",TO_DATE("2004.02.04 00:00:00", "YYYY.MM.DD HH24:MI:SS"),to_date ("2004.02.04 23:59:59","yyyy.mm.dd hh24:mi:ss"));
end;
так не работает


 
Reindeer Moss Eater   (2004-02-04 12:31) [24]

так не работает

нет такого понятия "не работает".

Есть понятие "генерируется исключение с таким-то кодом"
Есть понятие "GetLastError вернул не нулевое значение"
и т.д.


 
Reindeer Moss Eater   (2004-02-04 12:33) [25]

И где наконец текст курсора?


 
nomad   (2004-02-04 13:38) [26]

Вот к примеру процедура :
create or replace procedure test( table_name in VARCHAR2,cur out types.cursorType )

as

SQLString varchar2(2000);
begin
SQLString:="select * from "||table_name;
OPEN cur FOR SQLString;
end;

Вот так я ее вызываю:
begin
test("test");
end;


 
Reindeer Moss Eater   (2004-02-04 15:06) [27]

Мы с утра про ошибки в ЭТОЙ твоей процедуре с ЭТИМ списком параметров и про ошибки в ЭТОМ курсоре разговариваем?

Нафик здесь твой "test" вообще?
Что бы научить форумчан писать хранимые процедуры и пользоваться курсорами?


 
nomad   (2004-02-04 15:14) [28]

да я просто хочу чтоб мне объяснили как правильно вызвать процедуру при помощи query ?
и никого я ни чему не учу.
мне просто нужен совет.


 
Reindeer Moss Eater   (2004-02-04 15:32) [29]

да я просто хочу чтоб мне объяснили как правильно вызвать процедуру при помощи query ?

Кто-то утверждал, что на восьмерке все работает.

мне просто нужен совет.

Отложи в сторону FastReport, Delphi и проч.
Открой PLSQL developer (или что там у тебя).
Вызови свою процедуру, пройдись по курсору, в общем протестируй это прямо на сервере


 
nomad   (2004-02-04 15:38) [30]

на сервере все работает и на восьмерке тоже


 
Reindeer Moss Eater   (2004-02-04 15:59) [31]

сравни типы данных у полей курсора на восьмерке и на девятке.


 
nomad   (2004-02-04 16:58) [32]

одинаковые


 
Reindeer Moss Eater   (2004-02-04 17:05) [33]

Если одно и то же приложение работает на одной и той же клиентской машине с двумя серверами и на девятке возникает ошибка и все что ты говоришь выше - правда, то это - чудо великое.
С большой буквы Ч.


 
nomad   (2004-02-04 17:14) [34]

вот клиентская машина разная :)


 
Reindeer Moss Eater   (2004-02-04 17:16) [35]

Ну дык:

1. Разные клиенты Оракла
2. Разные BDE или что там у тебя. С их разными парамерами подключения
3. Разные экземпляры программ.


 
nomad   (2004-02-04 17:24) [36]

спасибо за помощь!


 
Val   (2004-02-04 18:13) [37]

>nomad © (04.02.04 17:24) [36]
ну так скажите, что было, как решили-то?


 
nomad   (2004-02-04 18:50) [38]

следствие зашло в тупик
(с моей стороны:))


 
Reindeer Moss Eater   (2004-02-04 18:55) [39]

Какой нафик тупик?

Если имеем к примеру NUMBER(12,0) на сервере, и двух клиентов ожидающих ftInteger, но у одного ENABLE INTEGERS = TRUE а у другого наоборот, то у другого будет облом. Точнее не облом, а ftFloat.

Это еще в [4] было сказано.


 
Sergey13   (2004-02-05 08:50) [40]

2Reindeer Moss Eater © (04.02.04 18:55) [39]
Если бы это было так, то ИМХО вылетала бы ощибка приложения, а тут имеем Ora06550, т.е. ошибку сервера.

2nomad © (03.02.04 13:06)
Кстати, у меня по документации (правда на 8.0.4 8-) у этого номера ошибки несколько другое название и толкование (Причина - произошла ошибка компиляции PL/SQL). Почему бы это? Ты все ошибки перечислил?



Страницы: 1 2 вся ветка

Форум: "Базы";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.008 c
1-6090
ses
2004-02-21 01:36
2004.03.03
Не запускается программа где не установлен Delphi


3-5948
Zilog
2004-02-05 16:39
2004.03.03
как програмно менять порядок столбцов (Fields) в комоненте Query?


1-6093
dr Tr0jan
2004-02-16 03:49
2004.03.03
Как убрать звук из TEdit?


14-6248
Makhanev A.S.
2004-02-11 22:07
2004.03.03
Помогите плиз...


14-6235
raymond
2004-02-09 13:51
2004.03.03
Как подружить The Bat и прокси?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский