Гость
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / ora-01008 / 12 сообщений из 12, страница 1 из 1
30.05.2013, 09:52
    #38279640
Ora_01008
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
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
30.05.2013, 11:45
    #38279887
-=APS=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora-01008
Что такое :ddate - это item какого-то блока? Тогда нужна ссылка на блок.
PS. ORA-01008: not all variables bound. Т.е., в запросе ваша переменная :ddate не распознана и не связана значением.
...
Рейтинг: 0 / 0
30.05.2013, 12:00
    #38279923
Ora_01008
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora-01008
да, это item.

подставила уже и блок и все равно такая же фигня ((((((((((((
...
Рейтинг: 0 / 0
30.05.2013, 12:06
    #38279935
-=APS=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora-01008
Можете проиллюстрировать более развёрнутым фраментом кода/скриншотами?
И еще один момент не совсем понятен - сама-то pipelined функция у вас в запросе - где? "... from table(function(:block.item))"?
...
Рейтинг: 0 / 0
30.05.2013, 12:11
    #38279946
Ora_01008
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora-01008
сама функция ? в смысле где ? на базе ....
...
Рейтинг: 0 / 0
30.05.2013, 12:18
    #38279959
-=APS=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora-01008
Подсказка:
автор курсор написан с использованием функции pipielend
select * from table (:ddate)
Где тут вызов pipelined функции?
...
Рейтинг: 0 / 0
30.05.2013, 12:19
    #38279964
Ora_01008
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora-01008
select *
From table (ubrr_xxi5.pack.function(:BLOCK3.ddate))
...
Рейтинг: 0 / 0
30.05.2013, 13:27
    #38280111
-=APS=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora-01008
Набросал тестовый пример, действительно, валится по 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
30.05.2013, 14:11
    #38280198
Ora_01008
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ora-01008
ни в какую все так же ...

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

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

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

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


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