powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Передача в функцию ассоциативной коллекции с значением по умолчанию
10 сообщений из 10, страница 1 из 1
Передача в функцию ассоциативной коллекции с значением по умолчанию
    #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
Передача в функцию ассоциативной коллекции с значением по умолчанию
    #39909769
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Передача в функцию ассоциативной коллекции с значением по умолчанию
    #39909772
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а, сорян, ступил
прошу прощения
...
Рейтинг: 0 / 0
Передача в функцию ассоциативной коллекции с значением по умолчанию
    #39909808
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMNO
чтобы работала конструкция такого вида
В качестве default возможно указание любого значения с типом t_table_dictionary. Ассоциативные коллекции и рекорды не могут быть null.
...
Рейтинг: 0 / 0
Передача в функцию ассоциативной коллекции с значением по умолчанию
    #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
Передача в функцию ассоциативной коллекции с значением по умолчанию
    #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
Передача в функцию ассоциативной коллекции с значением по умолчанию
    #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
Передача в функцию ассоциативной коллекции с значением по умолчанию
    #39909888
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMNO
Два чая этому Джентльмену.
Новый год же на носу. Может быть что-нибудь покрепче?
...
Рейтинг: 0 / 0
Передача в функцию ассоциативной коллекции с значением по умолчанию
    #39909902
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic
Можно и проще
Прощесть несколько устарела.
...
Рейтинг: 0 / 0
Передача в функцию ассоциативной коллекции с значением по умолчанию
    #39909903
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-
Прощесть несколько устарела.
Не спорю.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Передача в функцию ассоциативной коллекции с значением по умолчанию
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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