|
PL/pgSQL. Как в получить поле записи в цикле?
|
|||
---|---|---|---|
#18+
Есть таблица с 43 однотипными именами (a1, a2,..) Пробую перебрать их вот так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Ругается на строку: _v = _r._f ; Знаю, что нужно тут вместо переменной писать имя поля, но ломает 43 раза писать одно и тоже. Вопрос как это обойти? В гугле не нашел, а здесь на форуме давно было сказано, вроде в 9.0 должны были такую возможность дать, но я в документации не нашел, хотя уже 10 вышла, но я пока на 9.6. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 12:38 |
|
PL/pgSQL. Как в получить поле записи в цикле?
|
|||
---|---|---|---|
#18+
На Ваш вопрос не отвечу, но у Вас первое обращение идет к 'a0', а последние к 'a42'. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2019, 16:58 |
|
PL/pgSQL. Как в получить поле записи в цикле?
|
|||
---|---|---|---|
#18+
Да, но суть не в этом. В строке _v = _r._f ; _r - это объект - очередная строка таблицы _f - имя поля Обычно пишут так: _r.a1 или _r.a2 ... но делать так 40 раз как-то не очень - а на переменную _f он ругается (( Не пойму как сделать, должен быть какой-то способ, кто-нибудь подскажет? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 09:07 |
|
PL/pgSQL. Как в получить поле записи в цикле?
|
|||
---|---|---|---|
#18+
an2k, поможет вам динамический SQL. как-то так: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 10:20 |
|
PL/pgSQL. Как в получить поле записи в цикле?
|
|||
---|---|---|---|
#18+
an2k Да, но суть не в этом. В строке _v = _r._f ; _r - это объект - очередная строка таблицы _f - имя поля Обычно пишут так: _r.a1 или _r.a2 ... но делать так 40 раз как-то не очень - а на переменную _f он ругается (( Не пойму как сделать, должен быть какой-то способ, кто-нибудь подскажет? если не хочется мучаться с динамо, то можно медитировать в такую сорону : Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2019, 11:48 |
|
PL/pgSQL. Как в получить поле записи в цикле?
|
|||
---|---|---|---|
#18+
qwwq, Вот это, честно, не понял, ладно придется тупо перечислить 43 раза (( Спасибо все, кто пытался помочь. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 13:32 |
|
PL/pgSQL. Как в получить поле записи в цикле?
|
|||
---|---|---|---|
#18+
an2k, Код: plsql 1.
Блин оно же даже в stackoverflow есть... неужели так тяжело погуглить? :( ps: если у вас возникла такая задача - скорее всего у вас что то не так с дизайном базы. Вероятнее всего вместо 43 однотипных полей нужен массив из 43 элементов с нормальным доступом. Или json(b) / hstore. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 14:16 |
|
PL/pgSQL. Как в получить поле записи в цикле?
|
|||
---|---|---|---|
#18+
an2k qwwq, Вот это, честно, не понял<> замените "майтейбл" на "ётейбл" и помедитируйте на результат ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 14:48 |
|
PL/pgSQL. Как в получить поле записи в цикле?
|
|||
---|---|---|---|
#18+
Двоечники ) JSON Код: 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.
Код: plaintext 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.
EXECUTE Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f1 = 0.0499203437939286 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f2 = 0.125165605917573 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f3 = 0.0765905892476439 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f4 = 0.662871616426855 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f5 = 0.778731087222695 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f1 = 0.0814210381358862 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f2 = 0.826806105207652 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f3 = 0.300207323860377 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f4 = 0.946426101028919 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f5 = 0.0437120264396071 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f1 = 0.59994939994067 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f2 = 0.260397961828858 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f3 = 0.773129916284233 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f4 = 0.245339550543576 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f5 = 0.282598315738142 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f1 = 0.484617314767092 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f2 = 0.673762732185423 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f3 = 0.312586843501776 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f4 = 0.592565366998315 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f5 = 0.912156303413212 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f1 = 0.192995287012309 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f2 = 0.210349347442389 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f3 = 0.163711720146239 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f4 = 0.133532638195902 psql:test20191209execute.sql:34: ЗАМЕЧАНИЕ: f5 = 0.818814854137599 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2019, 15:57 |
|
|
start [/forum/topic.php?fid=53&tid=1994885]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 278ms |
total: | 437ms |
0 / 0 |