|
|
|
двумерный массив. что не так делаю?
|
|||
|---|---|---|---|
|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. выдаёт ошибку ERROR: array subscript out of range если одну из строк закомментировать, то работает что не так делаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2015, 01:52 |
|
||
|
двумерный массив. что не так делаю?
|
|||
|---|---|---|---|
|
#18+
kkv79, многомерные массивы не могут быть расширены присвоением, коллизия прямоугольности нарушается. декларируй размерности или присвамвай целиком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2015, 02:34 |
|
||
|
двумерный массив. что не так делаю?
|
|||
|---|---|---|---|
|
#18+
p2.kkv79, декларируй размерности а это как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2015, 04:58 |
|
||
|
двумерный массив. что не так делаю?
|
|||
|---|---|---|---|
|
#18+
kkv79p2.kkv79, декларируй размерности а это как? вот да, присоединяюсь к вопросу. в разделе http://www.postgresql.org/docs/current/static/plpgsql-declarations.html -- про объявление размерности в plpgsql уй ночевал. как бе хвалёная дока пж -- на поверку -- "кака всегда" . кароче , как говаривал антон палыч --"люди, львы, козлы и pidarasy" . вот тут тоже одно бухтение : http://www.postgresql.org/message-id/op.t2j450qnll0p5y@1-rtt202dnf3uds.mshome.net]http://www.postgresql.org/message-id/op.t2j450qnll0p5y@1-rtt202dnf3uds.mshome.net единственное что приходит -- зафилить предварительно нужный array руками: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. в общем -- тьху на них ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2015, 08:38 |
|
||
|
двумерный массив. что не так делаю?
|
|||
|---|---|---|---|
|
#18+
qwwq, Странно. Здесь явно написано, как объявлять массивы, здесь - как конструировать. Ни в одном из примеров никто не пытается обратиться к элементу массива до того как он сконструирован. Как прикажете реагировать PG в случае присвоения к элементу массива, которого еще не существует (не объявлен ранее)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2015, 09:45 |
|
||
|
двумерный массив. что не так делаю?
|
|||
|---|---|---|---|
|
#18+
qwwqединственное что приходит -- зафилить предварительно нужный array руками: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. декларация уже задала размерности. "зафилить" или присвоить конструктор это альтернатива для массива с неуказанными размерностями [][]. ursidoКак прикажете реагировать PG в случае присвоения к элементу массива, которого еще не существует (не объявлен ранее)?Присвоение "создает" элемент и недостающие элементы размерности. Но не в случае многомерных массивов.postgresqlA stored array value can be enlarged by assigning to elements not already present. Any positions between those previously present and the newly assigned elements will be filled with nulls. For example, if array myarray currently has 4 elements, it will have six elements after an update that assigns to myarray[6]; myarray[5] will contain null. Currently, enlargement in this fashion is only allowed for one-dimensional arrays, not multidimensional arrays. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2015, 09:59 |
|
||
|
двумерный массив. что не так делаю?
|
|||
|---|---|---|---|
|
#18+
как сейчас помню -- тут было содержательное сообщение по поводу 2--х предыдущих выступлений с их, неумолимо вытекающей из скрипта, оценкой. короче -- воспроизведите сами. и помедитируйте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2015, 13:54 |
|
||
|
двумерный массив. что не так делаю?
|
|||
|---|---|---|---|
|
#18+
p2.qwwqединственное что приходит -- зафилить предварительно нужный array руками: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. декларация уже задала размерности. "зафилить" или присвоить конструктор это альтернатива для массива с неуказанными размерностями [][]. ursidoКак прикажете реагировать PG в случае присвоения к элементу массива, которого еще не существует (не объявлен ранее)?Присвоение "создает" элемент и недостающие элементы размерности. Но не в случае многомерных массивов.postgresqlA stored array value can be enlarged by assigning to elements not already present. Any positions between those previously present and the newly assigned elements will be filled with nulls. For example, if array myarray currently has 4 elements, it will have six elements after an update that assigns to myarray[6]; myarray[5] will contain null. Currently, enlargement in this fashion is only allowed for one-dimensional arrays, not multidimensional arrays. закомментируйте подсвеченную строчку там не зря нотис предвыведен. если у кого со зрением швах. //нашёл в кеше урсидо явно не всасывает различие между SQL и plpgsql. и их декларациями . странно -- производил впечатление рассудительного человека. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2015, 13:59 |
|
||
|
двумерный массив. что не так делаю?
|
|||
|---|---|---|---|
|
#18+
qwwqурсидо явно не всасывает различие между SQL и plpgsql Наверняка Вы сможете объяснить разницу в конкретном случае. Скорее всего спорный вопрос - конструирование/инициализация массива и обращение/присвоение значения конкретному элементу массива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2015, 14:38 |
|
||
|
двумерный массив. что не так делаю?
|
|||
|---|---|---|---|
|
#18+
ursidoqwwqурсидо явно не всасывает различие между SQL и plpgsql Наверняка Вы сможете объяснить разницу в конкретном случае. Скорее всего спорный вопрос - конструирование/инициализация массива и обращение/присвоение значения конкретному элементу массива. а зачем ? умного учить -- только портить. вас не напрягает, что в каждом языке свои декларации ? то что plpgsql работает как транслятор отдельных стейтментов в SQL не снимает с него обязанности обеспечить сносный язык деклараций. то, что "задекларированный" массив [3][7] является массивом пустой длины Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. , в который чудом можно запихать элемент [1][1], в каковом состоянии он приобретет свою размерность и перестанет быть вдувабельным -- это праздник деклараций какой--то. а сделайте так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. -- т.е. декларации размерности и размера массива в plpgsql попросту нет. это данность. размерность массив получает при заполнении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2015, 15:01 |
|
||
|
двумерный массив. что не так делаю?
|
|||
|---|---|---|---|
|
#18+
ещё для медитаций: брюки превращаются Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2015, 15:06 |
|
||
|
двумерный массив. что не так делаю?
|
|||
|---|---|---|---|
|
#18+
qwwq, Теперь Вам осталось только показать разницу с другим языком -- ту самую, которую я не понимаю. Подозреваю, что этот язык - "чистый" SQL. То что Вы обнаружили - действительно так. Об этом английским языком написано в документации : http://www.postgresql.org/docs/9.2/static/arrays.html However, the current implementation ignores any supplied array size limits, i.e., the behavior is the same as for arrays of unspecified length. The current implementation does not enforce the declared number of dimensions either. Arrays of a particular element type are all considered to be of the same type, regardless of size or number of dimensions. So, declaring the array size or number of dimensions in CREATE TABLE is simply documentation; it does not affect run-time behavior. В каком именно месте Вас обманули? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2015, 15:19 |
|
||
|
двумерный массив. что не так делаю?
|
|||
|---|---|---|---|
|
#18+
ursidoqwwq, <> В каком именно месте Вас обманули? вы -- в том месте где вместо декларации plpgsql авторпро объявление размерности в plpgsql подсовываете ссылку на SQL. // который -- тоже -- не декларация, а необязательное извещение о намерениях-- т.е. тут лохотроншики - сами авторы, хотя они это и честно признают. чем такие декларации -- лучше никаких. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. p2 -- там, где подсвечивает синтакс в DECLARE, не проверив, что он ничего на деле не задаёт. итого: 1. декларации размерности массива не существует ни в SQL ни в plpgsql. 2. Массив получает размерность при заполнении. 3. одномерный массив автопополняем присвоением элемента за границей заполненного 4. двумерный -- нет (ну не шмогла, ага. лень было реализовывать) к применению -- при необходимости расширить массив размерность более 1 -- имейте гемор -- например создайте проинициированный null or 0, и присвойте всем его младшим элементам значения из копируемого .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2015, 16:05 |
|
||
|
двумерный массив. что не так делаю?
|
|||
|---|---|---|---|
|
#18+
qwwq, О! Таким образом, мой обман заключается в том, что Вы не внимательно читаете документацию. С моментом начала проблем с массивами - не согласен. Проблемы начинаются уже с момента принятия решения использования массивов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2015, 16:21 |
|
||
|
двумерный массив. что не так делаю?
|
|||
|---|---|---|---|
|
#18+
ursidoqwwq, О! Таким образом, мой обман заключается в том, что Вы не внимательно читаете документацию. С моментом начала проблем с массивами - не согласен. Проблемы начинаются уже с момента принятия решения использования массивов. напоминаю челу с говорящим ником 1. у ТС проблема в plpgsql 2. п2 рекомендует решить её декларацией размерности 3. ТС спрашивает как 4. я присоединяюсь к вопросу (пока всё -- про plpgsql) 5. и тут появляется, кхм, весь в белом, и тычет на доку , но уже про SQL внимание -- вопрос: кто в этом треде лишний ? -- ещё разжовывать ? вас , кстати, не софтварером зовуть ? -- он вот всегда также ножку в третью позицию ставит ха 20 оет так наловчился -- тоже небось подпольный урсус какой, а то и вовсе -- убыб. евпочя пс. про то, что скл "декларация" ни к чему не обязывает -- я знаю давно, и не обращаю внимания. мне нужна декларация в процедурном языке, и именно декларация. а не пустышка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2015, 16:47 |
|
||
|
двумерный массив. что не так делаю?
|
|||
|---|---|---|---|
|
#18+
qwwq1. у ТС проблема в plpgsql 2. п2 рекомендует решить её декларацией размерности 3. ТС спрашивает как 4. я присоединяюсь к вопросу (пока всё -- про plpgsql) с декларацией размерности я ошибся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2015, 18:07 |
|
||
|
двумерный массив. что не так делаю?
|
|||
|---|---|---|---|
|
#18+
p2.<> с декларацией размерности я ошибся. я многажды набиваю тут себе шишку. поскольку оно редко надо -- я в память надолго не гружу. и всякий раз, когда кто--то говорит, что это возможно -- стараюсь узнать -- как. ну вот хотелось бы, да. ан -- нет в жисти щасья ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2015, 18:52 |
|
||
|
двумерный массив. что не так делаю?
|
|||
|---|---|---|---|
|
#18+
сквозь дурацкие толпы клонов дурацкого родного постгрёвого списка рассылки, гугление выводит на https://wiki.postgresql.org/wiki/Matrices_Multidimensionales_con_funciones, где в итоге, кажись, предлагается расширять двумерный массив конкатенированием к нему новых одномерных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 13:03 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39068453&tid=1997627]: |
0ms |
get settings: |
6ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
176ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 480ms |

| 0 / 0 |
