|
|
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
Всем привет подскажите пожалуйста такая ситуация: есть переменная mod_accounts numb_array; а тип numb_array уже: CREATE TYPE numb_array IS TABLE OF pair_number; а вот уже pair_number: CREATE OR REPLACE TYPE pair_number AS OBJECT ( i NUMBER, j NUMBER ) И мне нужно добавить новый элемент в эту коллекцию: begin --Для начала я её инициализировал: mod_accounts:=numb_array(pair_number(1,1)); --потом посмотрел кол-во элементов в коллекции: DBMS_OUTPUT.PUT_LINE(mod_accounts.count); --И он мне вывел - 1; --Затем мне нужно добавить новый элемент в эту коллекцию, и я делаю так: mod_accounts.extend(1); --после чего хочу присвоить значения вторым элементам коллекции: mod_accounts(2).i:=2; mod_accounts(2).j:=2; end; и он мне пишет - Ссылка на неинициализированный составной тип строка такая-то Про все про это прочитал тут - https://habrahabr.ru/post/254355/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 16:32 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
как мн сделать так что бы в этой коллекции было что-то вроде: 1) 1,1 2) 2,2 3) 3,3 ... и т.д. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 16:33 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
boris_borisych Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 17:45 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
xtender, Благодарю, скажите, а почему так? Это конструктор что ли такой для неё? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 18:03 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
boris_borisych, у тебя коллекция объектов , т.е. помимо инициализации самой коллекции, надо еще инициализировать и каждый объект ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 18:09 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
xtenderboris_borisych, у тебя коллекция объектов , т.е. помимо инициализации самой коллекции, надо еще инициализировать и каждый объект Да, помогло, благодарю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2017, 07:43 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
xtenderboris_borisych, у тебя коллекция объектов , т.е. помимо инициализации самой коллекции, надо еще инициализировать и каждый объект Почему-то то же самое в цикле не работает declare i pls_integer; begin for i in 1..3 loop mod_accounts:=numb_array(pair_number(i,i)); mod_accounts(i).i:=i; mod_accounts(i).j:=i; DBMS_OUTPUT.PUT_LINE(mod_accounts(i).i || ' - ' || to_char(i)); DBMS_OUTPUT.PUT_LINE(mod_accounts(i).j || ' - ' || to_char(i)); mod_accounts.extend(1); end loop; end; При присвоении i-го значения выводит строку - Индекс выходит за преелы счетчика массива Пробовал по разному: сначала добавить элемент, потом присвоить, так же пробовал инициализировать, добавить, инициализировать, присвоить, все равно выодит ошибка - Индекс выходит за преелы счетчика массива ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2017, 08:41 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
boris_borisych Код: plsql 1. 2. Не быть тебе программистом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2017, 08:59 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
Elicboris_borisych Код: plsql 1. 2. Не быть тебе программистом. т.е. по сути в момент инициализации... а почему тогда потом просто присваивание не срабатывает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2017, 09:13 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
Elic, скажите, а почему тогда при выполнении такого кода: for i in 1..3 loop mod_accounts:=numb_array(pair_number(i,i)); DBMS_OUTPUT.PUT_LINE(mod_accounts(i).j || ' - ' || to_char(j)); end loop; он ругается - Индекс выходит за пределы счетчика массива ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2017, 09:31 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
boris_borisychа почему тогдаОтветь себе на простые вопросы: сколько элементов в коллекции и как это количество меняется на протяжении цикла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2017, 09:47 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
Elicboris_borisychа почему тогдаОтветь себе на простые вопросы: сколько элементов в коллекции и как это количество меняется на протяжении цикла. Точно, понял уже, сделал так: for i in 1..3 loop mod_accounts:=numb_array(pair_number(i,i)); mod_accounts.extend(i); DBMS_OUTPUT.PUT_LINE (to_char(mod_accounts(i).key) || ' - ' || to_char(i) ); end loop; Но теперь столкнулся с вопросом, почему элементы 2-а и 3-и пустые? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2017, 09:56 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
boris_borisychНо теперьНеужели так сложно сдерживать себя и не выплескивать каждое проявление тупости на всеобщее обозрение. Сядь. Прочти книжку. Целиком. До конца. Три раза. Потом задавай вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2017, 11:27 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
жертва соцсетей, Пожалуйста по делу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2017, 11:44 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
boris_borisych, присмотритесь к такой строчке mod_accounts numb_array :=numb_array(pair_number(1,2),pair_number(3,4),pair_number(5,6)); и все у Вас получится ..... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2017, 12:09 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
Staxboris_borisych, присмотритесь к такой строчке mod_accounts numb_array :=numb_array(pair_number(1,2),pair_number(3,4),pair_number(5,6)); и все у Вас получится ..... stax Ну да, я понял, что эта инициализация сразу на все элементы массива, а как сделать такую штку в цикле? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2017, 12:27 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
Stax, спасибо Вам большое, получилось в цикле, только такой ещё момент - а если я не знаю сколько изначально может быть элементов в массиве? Например сейчас это 3-и, а завтра уже 150, если я буду каждый раз делать на 150 элементов, то это будет пустой тратой памяти, как можно поступить в этом плане? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2017, 12:32 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
boris_borisychStaxboris_borisych, присмотритесь к такой строчке mod_accounts numb_array :=numb_array(pair_number(1,2),pair_number(3,4),pair_number(5,6)); и все у Вас получится ..... stax Ну да, я понял, что эта инициализация сразу на все элементы массива, а как сделать такую штку в цикле? не поняли, но то не важно Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2017, 12:39 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
Stax, Спасибо Вам большое, я делал немного по другому, в declare инициализировал, потом в теле проги уже присваивал. Поэтому и возник вопрос, что делать если размер массива не определён ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2017, 12:55 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
Stax, почему-то стала возникать ошибка - expression is wrong type скопировал ваш код, выполнил на скрипте - норм, в пакете - ошибка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2017, 13:21 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
boris_borisych в declare инициализировал, потом в теле проги уже присваивал. Поэтому и возник вопрос Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2017, 13:21 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
boris_borisychвыполнил на скрипте - норм, в пакете - ошибка Ошибка в 17 строке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2017, 13:21 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, я все понимаю, но все равно пишет что тип неправильный, у индекса элементов коллекции тип ведь number, да ? Я же правильно прочитал про тэто? А если там тип number, то блин почему он тогда ругается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2017, 14:15 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
все ок, тип был неправильный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2017, 14:21 |
|
||
|
добавление нового элемента в коллекцию
|
|||
|---|---|---|---|
|
#18+
boris_borisychспасибо Вам большое, получилось в цикле, только такой ещё момент - а если я не знаю сколько изначально может быть элементов в массиве? Например сейчас это 3-и, а завтра уже 150, если я буду каждый раз делать на 150 элементов, то это будет пустой тратой памяти, как можно поступить в этом плане?Не боись. Тупой код всё равно хуже стать не сможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2017, 07:51 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=138&tid=1884960]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 209ms |
| total: | 370ms |

| 0 / 0 |
