powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / ora-01008
12 сообщений из 12, страница 1 из 1
ora-01008
    #38279640
Ora_01008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
выгрузка в excel проходит из курсора. курсор написан с использованием функции pipielend

select * from table (:ddate)

выходит ошибка ORA - 01008.

на форме :ddate type data и стоит форматная маска dd.mm.rr
в функции этот параметр то же дата.


если я пишу select * from table (to_date('01.01.2011','dd.mm.yyyy'))
ошибки нет.


как быть ? голову уже сломала !!!

всем спасибо заранее !!!
...
Рейтинг: 0 / 0
ora-01008
    #38279887
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что такое :ddate - это item какого-то блока? Тогда нужна ссылка на блок.
PS. ORA-01008: not all variables bound. Т.е., в запросе ваша переменная :ddate не распознана и не связана значением.
...
Рейтинг: 0 / 0
ora-01008
    #38279923
Ora_01008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да, это item.

подставила уже и блок и все равно такая же фигня ((((((((((((
...
Рейтинг: 0 / 0
ora-01008
    #38279935
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можете проиллюстрировать более развёрнутым фраментом кода/скриншотами?
И еще один момент не совсем понятен - сама-то pipelined функция у вас в запросе - где? "... from table(function(:block.item))"?
...
Рейтинг: 0 / 0
ora-01008
    #38279946
Ora_01008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сама функция ? в смысле где ? на базе ....
...
Рейтинг: 0 / 0
ora-01008
    #38279959
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подсказка:
автор курсор написан с использованием функции pipielend
select * from table (:ddate)
Где тут вызов pipelined функции?
...
Рейтинг: 0 / 0
ora-01008
    #38279964
Ora_01008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select *
From table (ubrr_xxi5.pack.function(:BLOCK3.ddate))
...
Рейтинг: 0 / 0
ora-01008
    #38280111
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Набросал тестовый пример, действительно, валится по ORA-01008. Возможно, формсовская pl/sql машина такие вещи корректно не умеет разбирать (в анонимном pl-sql блоке на сервере, естественно, всё работает). Примечание: проверял на Forms 6i, на других не проверял.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare
  n number;
begin
  n := 10; --:block2.id;
  for c in (select column_value as id from table(usr_pipe_test.gen_numbers(n))) loop  << -- так валится, а с константой - работает
    -- some excel processing or another
		message('ID: '||c.id, acknowledge);
  end loop;
end;


Похоже, придётся искать подходящий walkaround. Если нет возможности уйти от pipelined функции, можно, например, использовать пакетную переменную для передачи параметра через неё. Как-то так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
--
create or replace package usr_pipe_test is
  
  n_qty number;

  procedure set_param(n in number);
  function gen_numbers(n in number default null) return sys.odcinumberlist pipelined;
  
end usr_pipe_test;
--
create or replace package body usr_pipe_test is

procedure set_param(n in number) is
begin
  n_qty := n;
end;

function gen_numbers(n in number default null)
return sys.odcinumberlist pipelined as
begin
  for i in 1 .. nvl(n, n_qty)
  loop
    pipe row(i);
  end loop;
  return;
end;

end usr_pipe_test;
--
-- А в триггере, например, в WHEN-BUTTON-PRESSED
--
begin

  usr_pipe_test.set_param(:block2.id);

  for c in (select column_value as id from table(usr_pipe_test.gen_numbers(null))) loop

    -- some excel processing or another
		message('ID: '||c.id, acknowledge);
		
  end loop;

end;
...
Рейтинг: 0 / 0
ora-01008
    #38280198
Ora_01008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ни в какую все так же ...

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

на форме на кнопке сначала написана процедура присвоение переменное значения, потом с этим параметром запускается функция.

и все равно эта ora (((((((((
...
Рейтинг: 0 / 0
ora-01008
    #38280215
Ora_01008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всё получилось .

я добавила функцию которая возвращает эту переменную с пакета и поехало !!!!!
...
Рейтинг: 0 / 0
ora-01008
    #38280250
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, получилось, знач, хорошо :)
ЗЫ. На будущее... Старайтесь предоставлять тем, кто будет пытаться отвечать на ваш вопрос, больше информации, примеры кода, возможно, скриншоты, логи и т.п. А то из вас информацию клещами приходится вытаскивать и оперировать догадками.
...
Рейтинг: 0 / 0
ora-01008
    #38280322
Ora_01008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ок, учту на будущее )))
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / ora-01008
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]