Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Передача в функцию ассоциативной коллекции с значением по умолчанию / 10 сообщений из 10, страница 1 из 1
30.12.2019, 11:34
    #39909763
IMNO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в функцию ассоциативной коллекции с значением по умолчанию
Добрый день.

Есть функция с типом:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
CREATE OR REPLACE PACKAGE test_pkg 
IS
  TYPE t_table_dictionary IS TABLE OF VARCHAR2(250) INDEX BY VARCHAR2(50);

  FUNCTION test(
    p_a t_table_dictionary
  )
    RETURN NUMBER;
END test_pkg;
/

CREATE OR REPLACE PACKAGE BODY test_pkg 
IS
  FUNCTION test(
    p_a t_table_dictionary /*DEFAULT NULL*/
  )
    RETURN NUMBER
  IS
  BEGIN
    RETURN 1;
  END;
END test_pkg;
/



Можно присвоить какое-нибудь значение по умолчанию входному параметру, чтобы работала конструкция такого вида?

Код: plsql
1.
2.
3.
4.
5.
DECLARE 
  ret NUMBER(10) := 0;
BEGIN
  ret := test_pkg.test;
END;
...
Рейтинг: 0 / 0
30.12.2019, 11:50
    #39909769
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в функцию ассоциативной коллекции с значением по умолчанию
...
Рейтинг: 0 / 0
30.12.2019, 11:55
    #39909772
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в функцию ассоциативной коллекции с значением по умолчанию
а, сорян, ступил
прошу прощения
...
Рейтинг: 0 / 0
30.12.2019, 13:02
    #39909808
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в функцию ассоциативной коллекции с значением по умолчанию
IMNO
чтобы работала конструкция такого вида
В качестве default возможно указание любого значения с типом t_table_dictionary. Ассоциативные коллекции и рекорды не могут быть null.
...
Рейтинг: 0 / 0
30.12.2019, 13:14
    #39909818
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в функцию ассоциативной коллекции с значением по умолчанию
но можно выпендриться
Код: 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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
declare
     type index_by_collection is table of varchar2(250) index by varchar2(50);
     function index_by_collection_constructor(
          p_indexes sys.odcivarchar2list := sys.odcivarchar2list(),
          p_values sys.odcivarchar2list := sys.odcivarchar2list())
          return index_by_collection
     is
          l_this index_by_collection;
     begin
          for i in 1..least(p_indexes.count, p_values.count) loop
                l_this(p_indexes(i)) := p_values(i);
          end loop;
          return l_this;
     end index_by_collection_constructor;
     function udf_with_default_parameter(
          p_param index_by_collection := index_by_collection_constructor())
          return pls_integer
     is
          i varchar2(2000);
          n pls_integer := 0;
     begin
          i := p_param.first;
          while i is not null loop
                n := n + 1;
                dbms_output.put_line('p_param(' || i || ')=' || p_param(i));
                i := p_param.next(i);
          end loop;
          return n;
     end udf_with_default_parameter;
begin
     dbms_output.put_line('return value of call with non-default parameter is: ' ||
          udf_with_default_parameter(
                index_by_collection_constructor(
                     sys.odcivarchar2list('a','b','c'),
                     sys.odcivarchar2list('1','2','3')
                )
          )
     );
     dbms_output.put_line('return value of call with default parameter is: "' || udf_with_default_parameter() || '"');
end;

...
Рейтинг: 0 / 0
30.12.2019, 13:37
    #39909834
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в функцию ассоциативной коллекции с значением по умолчанию
--Eugene--
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
     type index_by_collection is table of varchar2(250) index by varchar2(50);
     function index_by_collection_constructor(
          p_indexes sys.odcivarchar2list := sys.odcivarchar2list(),
          p_values sys.odcivarchar2list := sys.odcivarchar2list())
          return index_by_collection
     is
          l_this index_by_collection;
     begin
          for i in 1..least(p_indexes.count, p_values.count) loop
                l_this(p_indexes(i)) := p_values(i);
          end loop;
          return l_this;
     end index_by_collection_constructor;
     function udf_with_default_parameter(
          p_param index_by_collection := index_by_collection_constructor())
          return pls_integer

Можно и проще:
Код: plsql
1.
2.
3.
4.
5.
6.
     type index_by_collection is table of varchar2(250) index by varchar2(50);
     empty_coll_var index_by_collection;
     empty_coll_const constant index_by_collection := empty_coll_var;
     function udf_with_default_parameter(
          p_param index_by_collection := empty_coll_const)
          return pls_integer
...
Рейтинг: 0 / 0
30.12.2019, 13:49
    #39909843
IMNO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в функцию ассоциативной коллекции с значением по умолчанию
Elic
Можно и проще:
Код: plsql
1.
2.
3.
4.
5.
6.
     type index_by_collection is table of varchar2(250) index by varchar2(50);
     empty_coll_var index_by_collection;
     empty_coll_const constant index_by_collection := empty_coll_var;
     function udf_with_default_parameter(
          p_param index_by_collection := empty_coll_const)
          return pls_integer



Два чая этому Джентльмену.

Спасибо. Помогло.
...
Рейтинг: 0 / 0
30.12.2019, 14:56
    #39909888
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в функцию ассоциативной коллекции с значением по умолчанию
IMNO
Два чая этому Джентльмену.
Новый год же на носу. Может быть что-нибудь покрепче?
...
Рейтинг: 0 / 0
30.12.2019, 15:12
    #39909902
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в функцию ассоциативной коллекции с значением по умолчанию
Elic
Можно и проще
Прощесть несколько устарела.
...
Рейтинг: 0 / 0
30.12.2019, 15:13
    #39909903
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в функцию ассоциативной коллекции с значением по умолчанию
-2-
Прощесть несколько устарела.
Не спорю.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Передача в функцию ассоциативной коллекции с значением по умолчанию / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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