powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / про массив и передача его как параметра
11 сообщений из 11, страница 1 из 1
про массив и передача его как параметра
    #39341585
dmitriy22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе время суток!

может я и простой вопрос спрошу, но хочется определенности:

задача: есть запрос select e.user_id,e.user_name from emp e;, который возвращает 2 поля user_id и user_name и надо сохранить эти записи в массиве и передать его в другую процедуру, в которой можно пользоваться этим массивом

Как я думаю надо делать:

1. Сделать объектный тип
create type t_list_rec as object (user_id varchar2(50 CHAR),user_name varchar2(255 char));

2. затем в процедуре я создаю тип таблицу type t_list_tab is table of t_list_rec;

3. затем создаю переменную с табличным типом type t_list_tab is table of t_list_rec;

4. Дальше нужно заполнить этот массив. Как лучше это сделать ???

И правильно ли я думаю, может есть другие варианты заполнение двумерного массива и последующей передачи

вот мой код

Код: 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.
 procedure list_arr 
 ( p_user_list out fsdw_export.t_list_rec) is
 
 
 type t_list_tab is table of t_list_rec;
 v_list_tab t_list_tab;
 
 cursor cur_list is
  select e.user_id,e.user_name from fsdw_export.emp e;
 
 begin

 open cur_list;
 loop
   fetch cur_list into t_list_rec;

   exit when cur_list%notfound;
   end loop;
close cur_list;

p_user_list := v_list_tab;


 end list_arr;



но пишет ошибку : Error: PLS-00321: expression 'T_LIST_REC' is inappropriate as the left hand side of an assignment statement
...
Рейтинг: 0 / 0
про массив и передача его как параметра
    #39341595
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmitriy22,

1) Если у тебя процедуры в одном пакете, то создавать тип на уровне схемы необязательно - достаточно объявить тип в пакете.
2) Помимо передачи массива информации в виде table of можно использовать курсорную переменную или xmltype.
...
Рейтинг: 0 / 0
про массив и передача его как параметра
    #39341596
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и фетчить в массив/коллекцию можно используя bulk collect into ... limit
...
Рейтинг: 0 / 0
про массив и передача его как параметра
    #39341607
dmitriy22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKad,

1. процедуры в разных пакетах

а можно на моем примере
...
Рейтинг: 0 / 0
про массив и передача его как параметра
    #39341608
dmitriy22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKad,

хорошо бы пример
...
Рейтинг: 0 / 0
про массив и передача его как параметра
    #39341621
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
про массив и передача его как параметра
    #39341634
dmitriy22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AmKad,

спасибо

сделал так:

procedure list_arr

--p_user_list out fsdw_export.t_list_rec
is

cursor cur_list is
select e.user_id,e.user_name from emp e;

type t_list_table is table of cur_list%rowtype;
v_list t_list_table;

begin

SELECT e.user_id,e.user_name BULK COLLECT INTO v_list
FROM fsdw_export.emp e;

for i in v_list.first .. v_list.last loop
dbms_output.put_line(v_list(i).user_id || ':' || v_list(i).user_name);
end loop;

--p_user_list := t_list_table;


end list_arr;

работает, но как теперь передать и какой нужно определить параметр в другую процедуру в другом пакете ?
...
Рейтинг: 0 / 0
про массив и передача его как параметра
    #39341739
вариабля
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmitriy22в которой можно пользоваться этим массивоми в которое же место ты собрался использовать этот массив?
...
Рейтинг: 0 / 0
про массив и передача его как параметра
    #39342135
dmitriy22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вариабля,

как параметр в процедуре
...
Рейтинг: 0 / 0
про массив и передача его как параметра
    #39342186
dmitriy22,

использовать параметр как параметр. никогда не догатался бы.
...
Рейтинг: 0 / 0
про массив и передача его как параметра
    #39343086
dmitriy22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
курсorтабля,

Причём здесь параметр как параметр ??? Не понял фразу.

Идея: передача двумерного массива из одного пакета в другой.

Вообще сделал, спасибо AmKad, который хоть ссылку кинул
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / про массив и передача его как параметра
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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