![]() |
| ||
|
|
Новости |
Поиск |
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-04 17:14:00) [21]
вот клиентская машина разная :)
Reindeer Moss Eater (2004-02-04 17:05:00) [22]
Если одно и то же приложение работает на одной и той же клиентской машине с двумя серверами и на девятке возникает ошибка и все что ты говоришь выше - правда, то это - чудо великое.
С большой буквы Ч.
nomad (2004-02-04 16:58:00) [23]
одинаковые
Reindeer Moss Eater (2004-02-04 15:59:00) [24]
сравни типы данных у полей курсора на восьмерке и на девятке.
nomad (2004-02-04 15:38:00) [25]
на сервере все работает и на восьмерке тоже
Reindeer Moss Eater (2004-02-04 15:32:00) [26]
да я просто хочу чтоб мне объяснили как правильно вызвать процедуру при помощи query ?
Кто-то утверждал, что на восьмерке все работает.
мне просто нужен совет.
Отложи в сторону FastReport, Delphi и проч.
Открой PLSQL developer (или что там у тебя).
Вызови свою процедуру, пройдись по курсору, в общем протестируй это прямо на сервере
nomad (2004-02-04 15:14:00) [27]
да я просто хочу чтоб мне объяснили как правильно вызвать процедуру при помощи query ?
и никого я ни чему не учу.
мне просто нужен совет.
Reindeer Moss Eater (2004-02-04 15:06:00) [28]
Мы с утра про ошибки в ЭТОЙ твоей процедуре с ЭТИМ списком параметров и про ошибки в ЭТОМ курсоре разговариваем?
Нафик здесь твой "test" вообще?
Что бы научить форумчан писать хранимые процедуры и пользоваться курсорами?
nomad (2004-02-04 13:38:00) [29]
Вот к примеру процедура :
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 12:33:00) [30]
И где наконец текст курсора?
Reindeer Moss Eater (2004-02-04 12:31:00) [31]
так не работает
нет такого понятия "не работает".
Есть понятие "генерируется исключение с таким-то кодом"
Есть понятие "GetLastError вернул не нулевое значение"
и т.д.
nomad (2004-02-04 12:29:00) [32]
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:24:00) [33]
как написать вызов этой процедуры в Query чтобы все было правильно?
А разве уже сейчас что-то неправильно?
Передаешь параметры, курсор строится в соответствии с параметрами, курсор возвращается.
nomad (2004-02-04 12:18:00) [34]
как написать вызов этой процедуры в Query чтобы все было правильно?
я не понимаю.
Reindeer Moss Eater (2004-02-04 12:05:00) [35]
Ты не знаешь как передаются параметры?
Ты не видишь куда именно подставляется четвертый параметр в курсоре?
Ты не можешь определить его значение, которое не вернет пустой датасет?
nomad (2004-02-04 12:01:00) [36]
хорошо , но как тогда его передать чтобы не было command text do not return recordset
?
Reindeer Moss Eater (2004-02-04 11:58:00) [37]
если указать 4 параметр то command text do not return recordset
У процедуры четвертый параметр - со значением по умолчанию.
Если его передать явно, условие where ничего не выбирает. (случай из [16])
Если его не передать, в where передается значение по умолчанию и тип этого умолчания не подходит для условия курсора.
тогда почему на oracle 8 все работает,а на 9 нет
Это как минимум два разных сервера, две разных процедуры и два разных курсора.
nomad (2004-02-04 11:46:00) [38]
тогда почему на oracle 8 все работает,а на 9 нет
Reindeer Moss Eater (2004-02-04 11:45:00) [39]
Либо переданные параметры в процедуру используются в параметрах курсора и его where с этими параметрами конфликтует
nomad (2004-02-04 11:45:00) [40]
если указать 4 параметр то command text do not return recordset