Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вопрос по ODCINUMBERLIST / 16 сообщений из 16, страница 1 из 1
31.10.2018, 14:07
    #39725821
ultrasonic7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ODCINUMBERLIST
Здравствуйте! Как правильно организовать цикл по ODCINUMBERLIST? Гуглил, но интересующая информация не была найдена.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DECLARE
  NUMS SYS.ODCINUMBERLIST;
BEGIN
  SELECT DISTINCT DOC_ID INTO DOC_NUMS FROM SCHEMA.TABLE;
  FOR I IN NUMS.FIRST .. NUMS.LAST LOOP
    BEGIN
      SCHEMA.PACKAGE.PROC(NUMS(I));
    EXCEPTION 
      WHEN OTHERS THEN dbms_output.put_line(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
    END;
  END LOOP;
END;
...
Рейтинг: 0 / 0
31.10.2018, 14:11
    #39725826
ultrasonic7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ODCINUMBERLIST
Так тоже ошибка:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DECLARE
  NUMS SYS.ODCINUMBERLIST;
BEGIN
  SELECT DISTINCT DOC_ID BULK COLLECT INTO DOC_NUMS FROM SCHEMA.TABLE;
  FOR I IN NUMS.FIRST .. NUMS.LAST LOOP
    BEGIN
      SCHEMA.PACKAGE.PROC(NUMS(I));
    EXCEPTION 
      WHEN OTHERS THEN dbms_output.put_line(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
    END;
  END LOOP;
END;
...
Рейтинг: 0 / 0
31.10.2018, 14:53
    #39725860
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ODCINUMBERLIST
ultrasonic7Так тоже ошибка:


Ошибку то огласи.

SY.
...
Рейтинг: 0 / 0
31.10.2018, 14:55
    #39725864
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ODCINUMBERLIST
SYultrasonic7Так тоже ошибка:


Ошибку то огласи.

SY.

A

Код: plsql
1.
2.
3.
4.
DECLARE
  NUMS SYS.ODCINUMBERLIST;
BEGIN
  SELECT DISTINCT DOC_ID BULK COLLECT INTO DOC_NUMS FROM SCHEMA.TABLE;



не смущает?

SY.
...
Рейтинг: 0 / 0
31.10.2018, 14:59
    #39725866
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ODCINUMBERLIST
ultrasonic7,

Код: plsql
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.
  1  DECLARE
  2    NUMS SYS.ODCINUMBERLIST;
  3  BEGIN
  4    SELECT empno BULK COLLECT INTO NUMS FROM emp;
  5    FOR I IN NUMS.FIRST .. NUMS.LAST LOOP
  6        dbms_output.put_line(nums(i));
  7    END LOOP;
  8* END;
SQL> /
7369
7499
7521
7566
7654
7698
7782
7788
7839
7844
7876
7900
7902
7934

PL/SQL procedure successfully completed.



......
stax
...
Рейтинг: 0 / 0
31.10.2018, 15:08
    #39725872
ultrasonic7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ODCINUMBERLIST
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DECLARE
  DOC_NUMS SYS.ODCINUMBERLIST;
BEGIN
  SELECT DISTINCT DOC_ID BULK COLLECT INTO DOC_NUMS FROM SCHEMA_NAME.TABLE_NAME;
  FOR I IN DOC_NUMS.FIRST .. DOC_NUMS.LAST LOOP
    BEGIN
      SCHEMA_NAME.PACKAGE_NAME.PROC_NAME(DOC_NUMS(I));
    EXCEPTION 
      WHEN OTHERS THEN dbms_output.put_line(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
    END;
  END LOOP;
END;



сообщение компилятора[Warning] ORA-24344: компиляция завершилась с ошибками
7/7 PLS-00306: ошибочно число или типы аргументов при обращении к 'PROC_NAME'
7/7 PL/SQL: Statement ignored
(43: 0): Warning: compiled but with compilation errors
...
Рейтинг: 0 / 0
31.10.2018, 15:13
    #39725881
K790
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ODCINUMBERLIST
ultrasonic7,

и что на входе в твою PROC_NAME?
...
Рейтинг: 0 / 0
31.10.2018, 15:13
    #39725882
ultrasonic7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ODCINUMBERLIST
SY,
Вот и ошибка, собственно.
...
Рейтинг: 0 / 0
31.10.2018, 15:15
    #39725886
ultrasonic7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ODCINUMBERLIST
K790ultrasonic7,

и что на входе в твою PROC_NAME?

В этом и вопрос. Как передать в PROC_NAME значения из DOC_NUMS ?
...
Рейтинг: 0 / 0
31.10.2018, 15:17
    #39725889
K790
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ODCINUMBERLIST
ultrasonic7,

что в спецификации твоей PROC_NAME?
...
Рейтинг: 0 / 0
31.10.2018, 15:19
    #39725894
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ODCINUMBERLIST
ultrasonic7В этом и вопрос. Как передать в PROC_NAME значения из DOC_NUMS ?
как Вы передаете в PROC_NAME константу (напр 7)?


ps
desc PACKAGE
......
stax
...
Рейтинг: 0 / 0
31.10.2018, 15:31
    #39725912
ultrasonic7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ODCINUMBERLIST
Нашел ошибку.
Процедура ведь как в пакете объявлена:
Код: plsql
1.
2.
3.
4.
5.
CREATE OR REPLACE PACKAGE SCHEMA_NAME.PACKAGE_NAME IS

  PROCEDURE PROC_NAME(iDocNums IN SYS.ODCINUMBERLIST);

END;



Соответственно, надо вызывать так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DECLARE
  DOC_NUMS SYS.ODCINUMBERLIST;
BEGIN
  SELECT DISTINCT DOC_ID BULK COLLECT INTO DOC_NUMS FROM SCHEMA_NAME.TABLE_NAME;
  FOR I IN DOC_NUMS.FIRST .. DOC_NUMS.LAST LOOP
    BEGIN
      SCHEMA_NAME.PACKAGE_NAME.PROC_NAME(DOC_NUMS);
    EXCEPTION 
      WHEN OTHERS THEN dbms_output.put_line(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
    END;
  END LOOP;
END;


Немного внимательность подкачала.
...
Рейтинг: 0 / 0
31.10.2018, 15:39
    #39725918
K790
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ODCINUMBERLIST
ultrasonic7Соответственно, не надо вызывать так:
...
Рейтинг: 0 / 0
31.10.2018, 15:40
    #39725921
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ODCINUMBERLIST
ultrasonic7Нашел ошибку.
Процедура ведь как в пакете объявлена:
Код: plsql
1.
2.
3.
4.
5.
CREATE OR REPLACE PACKAGE SCHEMA_NAME.PACKAGE_NAME IS

  PROCEDURE PROC_NAME(iDocNums IN SYS.ODCINUMBERLIST);

END;



Соответственно, надо вызывать так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
DECLARE
  DOC_NUMS SYS.ODCINUMBERLIST;
BEGIN
  SELECT DISTINCT DOC_ID BULK COLLECT INTO DOC_NUMS FROM SCHEMA_NAME.TABLE_NAME;
--  FOR I IN DOC_NUMS.FIRST .. DOC_NUMS.LAST LOOP
--    BEGIN
      SCHEMA_NAME.PACKAGE_NAME.PROC_NAME(DOC_NUMS);
    EXCEPTION 
      WHEN OTHERS THEN dbms_output.put_line(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
                  RAISE;
--    END;
--  END LOOP;
END;
...
Рейтинг: 0 / 0
31.10.2018, 15:41
    #39725922
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ODCINUMBERLIST
ultrasonic7Нашел ошибку.
Процедура ведь как в пакете объявлена:
Код: plsql
1.
2.
3.
4.
5.
CREATE OR REPLACE PACKAGE SCHEMA_NAME.PACKAGE_NAME IS

  PROCEDURE PROC_NAME(iDocNums IN SYS.ODCINUMBERLIST);

END;



Соответственно, надо вызывать так:



цикл лишний

.....
stax
...
Рейтинг: 0 / 0
01.11.2018, 07:39
    #39726251
ultrasonic7
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по ODCINUMBERLIST
andrey_anonymous, Stax,
Да, всё верно, цикл здесь не нужен. Что-то затупил я сегодня)). Спасибо, что подсказали правильный вариант.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вопрос по ODCINUMBERLIST / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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