
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
12.12.2014, 13:55:38
|
|||
|---|---|---|---|
|
|||
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
Доброго времени суток, уважаемые форумчане. Не нашел лучшей ветки, чем эта, ибо сабж происходит как раз в постгре. Запилил триггерную функцию. Повесил на BEFORE INSERT. Работает все, за исключением конструкции IF. Менял функцию на "не триггерную", возвращал значения переменных. Все переменные в порядке. Собсно код Код: 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. По результатам работы функции ВСЕГДА создается таблица, даже если она уже была создана на предыдущей итерации. Испробывал следующие варианты: - SELECT INTO _record * from pg_tables where tablename like ''||_tname||''; IF _record IS NULL THEN ... END IF; - EXECUTE 'SELECT * from pg_tables where tablename like ''||_tname||'';' INTO _varchar; IF (char_length(_varchar) > 0) THEN ... END IF; Еще что то пробывал... В общем ничего не помогает. Результат один. Готов смиренно перенести любую критику и выслушать любые варианты :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.12.2014, 14:06:03
|
|||
|---|---|---|---|
|
|||
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
KraG, ваша процедура вообще не может работать так как строка COMMIT; должна выдавать синтаксическую ошибку при запуске или компиляции --Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.12.2014, 14:51:37
|
|||
|---|---|---|---|
|
|||
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
Вай, вай вай... Все обман. Никакого COMMIT там нет. Это я в огонии понавставлял всяких там непонятных слов. В исходном варианте все кошерно. Повторю... Код Код: 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. 41. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.12.2014, 14:55:24
|
|||
|---|---|---|---|
|
|||
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
Maxim Boguk, Как откомпилировать -- расскажите подробнее. (Хотя бы чтобы все опечатки нашлись) К автору: Как Вы определили, что это именно новая таблица и она именно создается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.12.2014, 14:59:02
|
|||
|---|---|---|---|
|
|||
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
Дамы и Господа. Волею судьбы был носом ткнут в код с конструкцией "CREATE TABLE IF NOT EXISTS...". Это прекрасно... Но, мне все = интересно, что не так с IF... Если кроме меня интересующихся нет, то тему можно переносить в топку. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.12.2014, 15:19:17
|
|||
|---|---|---|---|
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
Tom LaneEXECUTE doesn't affect FOUND, even if the statement-to-be-executed would have. There's been some discussion about changing that, but no movement. regards, tom lane get diagnostics r = ROW_COUNT; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.12.2014, 15:26:29
|
|||
|---|---|---|---|
|
|||
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
SmeL_md, он after PERFORM 2 ТС выведите перед фаундом в нотисы все переменные. Ну и в нем еще схеманейм укажите, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.12.2014, 15:26:59
|
|||
|---|---|---|---|
|
|||
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
KraGНо, мне все = интересно, что не так с IF... Может посмотреть что не так с like ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.12.2014, 15:28:18
|
|||
|---|---|---|---|
|
|||
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
этта, ну и quote_ident() не вредно пользовать, если в наборе буковок не уверены ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.12.2014, 15:47:21
|
|||
|---|---|---|---|
|
|||
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
/\/\/\/\/\/\Maxim Boguk, Как откомпилировать -- расскажите подробнее. (Хотя бы чтобы все опечатки нашлись) К автору: Как Вы определили, что это именно новая таблица и она именно создается? Двумя путями: - узрел по-средствам pgadmin - встретил в результате выполнения select * from pg_tables where tablename like 't%' новую строку, которой ранее выполнения функции там не было Ну и эмпирическими всякими там путями... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.12.2014, 16:06:22
|
|||
|---|---|---|---|
|
|||
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
Господа, не все сразу) Попробую по порядку: - to SmeL_md, попрбую после того, как нажму "Опубликовать"; - to этта, прошу прощения за нубизм, но в сети я нашел только вариант с Код: plsql 1. Так сделать? А за quote_ident() спасибо. Милая функция. - to Павел Лузанов, за нотками сарказма мне слышется намек... Но вот только не пойму, что не так с like? Возможно quote_ident() поможет что то объяснить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.12.2014, 16:20:56
|
|||
|---|---|---|---|
|
|||
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
KraG- to Павел Лузанов, за нотками сарказма мне слышется намек... Но вот только не пойму, что не так с like? В триггере к имени таблицы в конце дописывается дата, поэтому like я бы записал так: Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.12.2014, 16:21:14
|
|||
|---|---|---|---|
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
Код: sql 1. • почему like • почему не учитываем schemaname ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.12.2014, 16:23:27
|
|||
|---|---|---|---|
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
Павел ЛузановВ триггере к имени таблицы в конце дописывается дата, поэтому like я бы записал так: Код: plsql 1. дата уже в _tname ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.12.2014, 16:27:04
|
|||
|---|---|---|---|
|
|||
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
TC, извиняй это я сам торможу, с датой в конце всё в порядке. Причина другая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.12.2014, 16:53:54
|
|||
|---|---|---|---|
|
|||
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
эттаSmeL_md, он after PERFORM 2 ТС выведите перед фаундом в нотисы все переменные. Ну и в нем еще схеманейм укажите, 1. Про переменные Код: plsql 1. 2. 3. 4. "дает" Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Т.е. переменные себя чувствуют хорошо. За исключением _record, который "пуст". Т.е. Код: plsql 1. отрабатывает не так, как надо :) Однако, _record != NULL. Значит конструкция Код: plsql 1. 2. должна отработать 2. Про quote_ident() Код: plsql 1. принесла следующие плоды Код: html 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.12.2014, 16:58:03
|
|||
|---|---|---|---|
|
|||
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
SmeL_mdTom LaneEXECUTE doesn't affect FOUND, even if the statement-to-be-executed would have. There's been some discussion about changing that, but no movement. regards, tom lane get diagnostics r = ROW_COUNT; Следующий код Код: plsql 1. 2. 3. 4. 5. дает следующий результат Код: html 1. Добры молодцы, поясните, пожалуйста, почему r_1 - 0 , r_2 - 0 ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.12.2014, 16:59:47
|
|||
|---|---|---|---|
|
|||
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
KraG<> 2. Про quote_ident() Код: plsql 1. принесла следующие плоды Код: html 1. 2. в случае литераоа нужен quote_nullable, а в случае идентификатора (в том же ддл) -- quote_ident а с вами всё ясно -- сделайте Код: sql 1. -- с вас хватит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.12.2014, 17:04:47
|
|||
|---|---|---|---|
|
|||
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
SmeL_md Код: sql 1. • почему like • почему не учитываем schemaname • почему like В случае со стрингами like мне кажется иделогически [более] верным. Это "врожденно", в смысле с момента моих первых полетов на SQL. Возможно, я категорически заблуждаюсь, но пока не вижу в чем. • почему не учитываем schemaname pg_tables вроде один. По крайней мере в результате выполнения Код: plsql 1. я вижу все таблицы всех схем. Потому не стал заморачиваться со schemaname. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.12.2014, 17:05:49
|
|||
|---|---|---|---|
|
|||
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
KraGэттаSmeL_md, он after PERFORM 2 ТС выведите перед фаундом в нотисы все переменные. Ну и в нем еще схеманейм укажите, 1. Про переменные Код: plsql 1. 2. 3. 4. "дает" Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Т.е. переменные себя чувствуют хорошо. За исключением _record, который "пуст". Т.е. Код: plsql 1. отрабатывает не так, как надо :) Однако, _record != NULL. Значит конструкция Код: plsql 1. 2. должна отработать 2. Про quote_ident() Код: plsql 1. принесла следующие плоды Код: html 1. 2. как у мсье со зрением ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.12.2014, 17:07:32
|
|||
|---|---|---|---|
|
|||
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
эттаKraG<> 2. Про quote_ident() Код: plsql 1. принесла следующие плоды Код: html 1. 2. в случае литераоа нужен quote_nullable, а в случае идентификатора (в том же ддл) -- quote_ident а с вами всё ясно -- сделайте Код: sql 1. -- с вас хватит. Глазастый :) Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.12.2014, 17:08:51
|
|||
|---|---|---|---|
|
|||
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
эттаKraGпропущено... 1. Про переменные Код: plsql 1. 2. 3. 4. "дает" Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Т.е. переменные себя чувствуют хорошо. За исключением _record, который "пуст". Т.е. Код: plsql 1. отрабатывает не так, как надо :) Однако, _record != NULL. Значит конструкция Код: plsql 1. 2. должна отработать 2. Про quote_ident() Код: plsql 1. принесла следующие плоды Код: html 1. 2. как у мсье со зрением ? Да видел уже, видел предыдущее сообщение, грубиян :) Лоханулся. Признаю косяк. Спасибо за время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.12.2014, 17:12:19
|
|||
|---|---|---|---|
|
|||
Не работает IF....ELSE, или мой мозг |
|||
|
#18+
KraG• почему like В случае со стрингами like мне кажется иделогически [более] верным. Это "врожденно", в смысле с момента моих первых полетов на SQL. врождённый ползать летает камнем -- за грубияна ответишь, нашЪ летунЪ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=53&tablet=1&tid=1998292]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 237ms |
| total: | 416ms |

| 0 / 0 |
