Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
Конвертируя предложения используемые в функциях и процедурах типа Код: plaintext 1. 2. 3. 4. 5. 6. 7. или даже Код: plaintext 1. 2. 3. 4. 5. 6. 7. которые понимаются IB,ORACLE, MSSQL получаю SQL20267N с кодом (1) с советом использовать SELECT statment, для размещения вызова функции последней в FROM предложении. Но WITH ( т.е SELECT statment ) синтаксически в SET не проходит. Нет ли решения более элегантного чем создание промежуточной таблицы для эмуляции результата вызова во 2 случае. Как выкручиваться в первом случае, вообще непонятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 13:33 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 15:00 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
Если Код: plaintext 1. 2. 3. 4. 5. 6. Может, так сойдёт? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Кстати, ведь SQL20267N - это The function function-name (specific specific-name) modifies SQL data and is invoked in an illegal context. Крутые же вы штуки выделываете... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 15:00 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein Код: plaintext 1. Там ведь загвоздка в функции, которая, мало того, что возвращает набор строк, ещё и модифицирует данные. Мне кажется, что предложенное в help'е переписывание с WITH и мой вариант эквивалентны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 15:07 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
VM Может, так сойдёт? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. На данный ход я получил SQL20267N причина 2. Как можно это перенести во внешнюю выборку ( т.е. для функции в RETURN, как я понимаю ) если по функции таких кусков несколько мне непонятно, т.е. наверно невозможно. MB Код: plaintext 1. 2. 3. 4. Буду думать как мне эту непонятную статичность обеспечить. Привык, что трансляторы сами обычно решают подобные вопросы. Но с учетом позднего замечания VM путь м.б. тупиковый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 17:00 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
ValPot Буду думать как мне эту непонятную статичность обеспечить. Привык, что трансляторы сами обычно решают подобные вопросы. Но с учетом позднего замечания VM путь м.б. тупиковый. Да вы не пугайтесь, просто напишите в своей процедуре так примерно, как в этом работающем примере: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Это просто демонстрация этого статического sql. В вашем примере похожий подход прокатит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 17:15 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
Так я так и пишу Код: 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. 29. 30. 31. 32. а она мне в ответ Код: plaintext 1. 2. 3. 4. в чем моя нестатичность ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 17:44 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
ValPot в чем моя нестатичность ? В функциях вы не можете использовать Код: plaintext В db2 sql функции слабо приспособлены для выполнения в них сложной логики. Они должны выполняться быстро и просто, чтобы sql команды, в которых они используются, могли хорошо оптимизироваться. Для сложной логики есть sql и external (если совсем тяжело) процедуры. Я понимаю, что вы портируете что-то с других систем и у вас есть уже устоявшийся стиль программирования и много написанного кода. Но, все таки хорошо подумайте над тем, чтобы использовать процедуры вместо функций. Мое ИМХО: не прислушавшись, вы, может быть, и получите в конце концов рабочую систему, но только для того, чтобы потом сказать: db2 - это большое Г@$%о, которое предназначено только для настольных приложений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 18:32 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
Хм, не скажете версию DB2 на которую вы это переводите? Не то чтобы я ответ знал, просто интересно. Про 2-й вариант - просто версия, если функцию определить как DETERMINISTIC - может это поможет? Про первый вариант - опять же чистая теория, и вдобавок DB2 LUW 8.1.4 и выше надо - нельзя ли переделать логику под использование конструкции SELECT.. FROM {NEW|OLD|FINAL} TABLE (insert|update) (это если функция простая-ее получится запихать в апдейт или инсерт) Прошу прощения что не проверял свои предложения - и некогда и версию сервера вашего не знаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 18:40 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
ValPotТак я так и пишу Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. 3. 4. в чем моя нестатичность ? А тут обычная синтаксическая ошибка, SELECT INTO действительно нельзя, зато тут можно написать FOR и получить примерно то же самое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 18:53 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
Версия свежая 9 for Win. MB. Проблемы . 1. Чтобы принимать сложное решение нужно хорошо чувствовать язык. А этого нет. 2. Обеспечивать портабельность очень сложного и активно развиваемого приложения невозможно в разных стилях. Пока понятно, что на каждый такой Select первого типа можно автогенерить уникальную функцию или процедуру. Со вторым типом хуже, когда у вас сотни живых запросов использующий данную, достаточно естественную и не запрещаемую стандартом SQL-92 , логику. Одна надежда что прием VM сработает в скрипте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 19:19 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
На всякий случай: в UDF присваивание надо писать так: SET (p1, p2, p3) = (select max(p1),max(p2),max(p3) ...) а в SP надо писать так: select max(p1),max(p2),max(p3) into p1, p2, p3 ... странно, но... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 21:10 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
Дела обстоят хуже, чем я думал. Код: 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. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 22:54 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
Интересно было бы узнать, что модифицирует пресловутая func1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 23:03 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
Что это за код причины 5. В моих доках такого нет. Интересно когда их несколько, а когда сотни .. Вот пример безобидного размера, но показывающий, как я вынужден бороться с отсутствием у DB2 возможности вызова Suspend где ни попадя. Код: 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. 29. 30. 31. 32. 33. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2006, 10:17 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
Не...., ну, на DB2 так не программируют. Почитайте лучше "кулинарную книжку", посмотрите примеры рекурсивных запросов. Да даже табличный UDF на Java будет лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2006, 10:54 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
А ещё лучше здесь UDF на C. Естественно, без всяких там временных таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2006, 10:59 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2006, 11:37 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
О! Про Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2006, 11:54 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
Так как я решаю адачу полуавтоматической конвертации и последующей потдержки аутентичности вагона текстов написанных и перерабатываемых на SQL-92, а не потдержки культуры речи на диалекте DB2, то предложение изучить основы С, смотрится более адекватно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2006, 11:57 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
Ничего не понял. В том числе про SQL-92. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2006, 12:28 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
Пресловутый SUSPEND - он ведь не из SQL-92? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2006, 12:35 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
да что там не понять - воплощение и поддержка независимого от конкретной базы приложения делает его одинаково плохо работающим на всех базах... то есть - миграция == полная задница, если только речь не идет о полной переделки.... IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2006, 12:35 |
|
||
|
SQL20267N в функции и далее
|
|||
|---|---|---|---|
|
#18+
Насчет SQL-92 в процедурах и функциях действительно ляпнул не подумав. Начал пробовать проблему во "внешних" запросах. Беру запрос - Код: plaintext 1. 2. - получаю - 20267N причина 2 Переписываю - Код: plaintext 1. 2. - проходит, а нужный мне INSERT Код: plaintext 1. 2. 3. 4. - не проходит по синтаксису. Значит ли это, что WITH работает только с последующим SELECT, а я снова попал на невозможность конвертации одного исходного запроса в один целевой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 19:07 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=33806818&tid=1605273]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 258ms |
| total: | 387ms |

| 0 / 0 |
