|
|
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
[DCC Error] fmReportExecutionProfitU.pas(960): E2283 Too many local constants. Use shorter procedures Там практически один оператор - присвоение текста SQL-запросу. Запрос длинный, с вложенными подзапросами. Код: pascal 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. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. Там около 18 длинных подзапросов, по количеству столбцов отчета. И выдает эту ошибку. Без разницы, делаешь все одним текстом ADQueryCoopS.SQL.Text := '...' или с помощью нескольких Add ADQueryCoopS.SQL.Add(...); Как обойти проблему. Более коротким запрос сделать не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 15:35:32 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvlad, Ты вылез за размеры 64К для процедуры. Разбей свой текст запроса на более мелкие куски или грузи из файла. Еще как вариант - перейти на х64 компилятор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 15:44:23 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Убери вот эти +#13#10. Ни тебе ни SQL компилятору они не помогают. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 15:46:52 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Еще бы накидать неиспользуемых датасетов на форму и там код хранить -- намного удобнее будет копипастить из-в делфи. А если нужна динамическая генерация, то вместо изменяемого кода поставить заглушку типа @MY_IF@ и туда уже через Replace вставлять куски. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 15:55:24 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovУбери вот эти +#13#10. Ни тебе ни SQL компилятору они не помогают. При отладке запроса, когда сохраняешь его SQL.SaveToFile() и потом отдельно смотришь текст в менеджере запросов - это помогает, а иначе запрос получается в одну строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 15:56:27 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
DarkMastersvnvlad, Ты вылез за размеры 64К для процедуры. Разбей свой текст запроса на более мелкие куски или грузи из файла. Еще как вариант - перейти на х64 компилятор. Как понять, разбить на более мелкие куски? Вот я разбил с помощью SQL.Add, в каждом по 10-20 строк, и в итоге та же самая ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 16:00:26 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvladDarkMastersvnvlad, Ты вылез за размеры 64К для процедуры. Разбей свой текст запроса на более мелкие куски или грузи из файла. Еще как вариант - перейти на х64 компилятор. Как понять, разбить на более мелкие куски? Вот я разбил с помощью SQL.Add, в каждом по 10-20 строк, и в итоге та же самая ошибка. Разбей процедуру на части. Вместо одной процедуры - две или три. Еще лучше - четыре. Но не больше пяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 16:05:17 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvlad, Вынеси эти константы из процедуры наружу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 16:11:32 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Кажись, в jedi компонентах был контейнер текстов. Кидаешь на форму или датамодуль, создаешь именованные айтемы, в айтемы во встроенном редакторе пишешь любой текст текст. Экземпляры объектов - айтемов внедряются в код класса формы, т.е. доступны в компайл-тайме. Вроде бы. А если недоступны, то доступны в рантайме, типа GetByName('''), :-). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 16:12:55 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvladПри отладке запроса а что мешает отлаживать запрос в админском для твоей СУБД инструменте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 16:19:56 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
чччДКажись, в jedi компонентах был контейнер текстов. Кидаешь на форму или датамодуль, создаешь именованные айтемы, в айтемы во встроенном редакторе пишешь любой текст текст. Экземпляры объектов - айтемов внедряются в код класса формы, т.е. доступны в компайл-тайме. Вроде бы. А если недоступны, то доступны в рантайме, типа GetByName('''), :-). Можно тупо на форму положить TMemo с текстом. А если на датамодуль - то TStringValuesList. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 16:20:24 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Док> а что мешает отлаживать запрос в админском для твоей СУБД инструменте? Вероятно, это динамический запрос - когда составные части (а не параметры) нестатичны. Приходилось как-то такое отлаживать, ужас. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 16:21:29 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Тот случай, когда "уж лучше бы ты использовал хранимки"... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 16:45:18 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамВероятно, это динамический запрос - когда составные части (а не параметры) нестатичны.Никакого вероятно, код приведен, в нем нет if. И, кстати, никакого ужаса в отладке тоже нет. Делаешь наряду с выполнением запроса вывод его текста и отлаживаешь спокойно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 16:52:55 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvladDarkMastersvnvlad, Ты вылез за размеры 64К для процедуры. Разбей свой текст запроса на более мелкие куски или грузи из файла. Еще как вариант - перейти на х64 компилятор. Как понять, разбить на более мелкие куски? Вот я разбил с помощью SQL.Add, в каждом по 10-20 строк, и в итоге та же самая ошибка. Используй темповые (временные) таблицы, если СУБД позволяет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 17:16:44 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
> Никакого вероятно, код приведен, в нем нет if. Хотя да, if-ов не видно, и если там действительно "практически один оператор", то лучше вынести в ХП. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 17:19:07 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам> Никакого вероятно, код приведен, в нем нет if. Хотя да, if-ов не видно, и если там действительно "практически один оператор", то лучше вынести в ХП. Может и не выдержать. :) На разных серверах разные ограничения на размер процедуры, "количество контекстов" и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 17:32:16 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvlad, У тебя получается слишком большая константная строка внутри процедуры. Можно: 1) Написать кучку процедур типа: Код: pascal 1. 2. 3. 4. и звать их как: Код: pascal 1. 2. 3. 4. 5. 6. 2) Сделать Код: pascal 1. Я за второй метод, если что. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 18:11:35 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvladПри отладке запроса, когда сохраняешь его SQL.SaveToFile() и потом отдельно смотришь текст в менеджере запросов - это помогает Лично я сначала отлаживаю запрос во внешнем инструменте, а только потом копипастю его в программу, обрамляя строки кавычками. Так проще получается. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 18:16:33 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Ограничения, конечно, есть, но, во-первых, они довольно большие, во-вторых, эта бодяга с клиента всё равно на сервер уйдёт. :) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 18:17:53 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovsvnvladПри отладке запроса, когда сохраняешь его SQL.SaveToFile() и потом отдельно смотришь текст в менеджере запросов - это помогает Лично я сначала отлаживаю запрос во внешнем инструменте, а только потом копипастю его в программу, обрамляя строки кавычками. Так проще получается. Обычно получается с первого раза. Затыки бывают один на 20 случаев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 18:19:53 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvlad> Обычно получается с первого раза. С первого раза пишешь запросы прямо в Delphi, без DB-tool? Силён. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 18:30:20 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Можно типа этого Код: pascal 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 18:35:40 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустамsvnvlad> Обычно получается с первого раза. С первого раза пишешь запросы прямо в Delphi, без DB-tool? Силён. Большинство не сложные, а те, что сложные, берутся с других похожих, уже работающих. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 18:38:54 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Ну что ты каждый вечер городишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 18:39:44 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
чччД, Кхм. У него текст не разу не изменялся в процедуре. Следовательно текст можно вынести в константы - поделить их на составляющие запросы, тем самым укоротив текст в несколько раз. И построить ирархию.. Я пишу фигню? Давайте создадим куча маленьких процедур! Но не боле 5 Код: pascal 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. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 19:17:39 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
DataModule + DataSet в нем ? Не, не слышали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 20:38:24 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Справедливости ради стоит заметить, что тот же PL/SQL Developer под Оракл подобный код спокойно копипастит из делфи к себе в редактор, автоматом его очищает и приводя к обычному запросу. И в обратном направлении так же из sql в делфи-строчки преобразует. Что-то мне подсказывает, что у автора именно он и стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 21:47:36 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Может проще все же хранимку использовать? Вообще не люблю sql запросы в программе, а вдруг в запросе что-то добавить или поменять надо, пересобирать клиент. Тогда уж лучше храните свой запрос в БД, загружайте оттуда и пихайте куда хотите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 22:00:48 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
JaDiСправедливости ради стоит заметить, что тот же PL/SQL Developer под Оракл подобный код спокойно копипастит из делфи к себе в редактор, автоматом его очищает и приводя к обычному запросу. И в обратном направлении так же из sql в делфи-строчки преобразует. Что-то мне подсказывает, что у автора именно он и стоит. У меня EMS SQL Manager for MySQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 22:14:42 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
эндиМожет проще все же хранимку использовать? Вообще не люблю sql запросы в программе, а вдруг в запросе что-то добавить или поменять надо, пересобирать клиент. Тогда уж лучше храните свой запрос в БД, загружайте оттуда и пихайте куда хотите. Пробовал работать с хранимками, не понравилось по нескольким причинам. Требует все имена полей перечислять (с алиасами, хотя это и хорошая привычка), по-моему нельзя просто звездочку поставить. Приводит хранимку к какому-то своему неудобочитаемому виду. Если требуется отредактировать, это не так просто. Не прижились они у меня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 22:17:38 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
НяшикчччД, Кхм. У него текст не разу не изменялся в процедуре. Следовательно текст можно вынести в константы - поделить их на составляющие запросы, тем самым укоротив текст в несколько раз. И построить ирархию.. Я пишу фигню? Давайте создадим куча маленьких процедур! Но не боле 5 Код: pascal 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. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. В том то и дело, что текст меняется, но каждый раз незначительно, и на практике оказывается проще повторить его весь много раз, чем учитывать мелкие изменения в каждом повторении. Например там в одном случае 'ПЕРЕГРУЗКА', в другом на этом месте 'ТЭО'. В одном запросе джойнится таблица cargo_zone 2 раза, в другом таком же - нет, и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2017, 22:20:37 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvlad, А километровые портянки скл, стало быть прижились? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 05:55:09 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Вынести SQL-код во внешние файлы и грузить их по необходимости не судьба? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 06:14:12 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvlad, По моему ситуация идеальная для того, чтобы использовать представления (view). Практически все БД имеют такую возможность. Создав из этого запроса представление вы избавитесь от необходимости подгружать sql-портянку. Переменные можно передавать параметрами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 06:56:10 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
JaDiСправедливости ради стоит заметить, что тот же PL/SQL Developer под Оракл подобный код спокойно копипастит из делфи к себе в редактор, автоматом его очищает и приводя к обычному запросу. И в обратном направлении так же из sql в делфи-строчки преобразует. Что-то мне подсказывает, что у автора именно он и стоит. А, если не секрет, как это делается? Я себе создал макрос в Notepad++, но это лишний копипаст... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 09:28:36 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvlad, Ого, автор решил обойти ограничения компилятора))) И дальше неожиданное продолжение - ему надавали советов, как это сделать. Вот веселуха будет всё это поддерживать) Видимо, в вакансиях пишут "умение разбираться в чужом коде" как раз для этого случая) А сторед процедуру тут не предлагали использовать, не ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 10:00:22 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Valery_Bsvnvlad, Ого, автор решил обойти ограничения компилятора))) И дальше неожиданное продолжение - ему надавали советов, как это сделать. Вот веселуха будет всё это поддерживать) Видимо, в вакансиях пишут "умение разбираться в чужом коде" как раз для этого случая) А сторед процедуру тут не предлагали использовать, не ? Предлагали, не прижились они у него, говорит :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 10:36:50 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Если присмотреться, то обе части одинаковые Код: pascal 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 11:15:06 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
zinpub, пункт в менюA new "Paste from Host Language" function makes it easy to copy SQL statements from a host language like C++, Java, Basic or Pascal. The host language elements are removed and string syntax elements are converted: https://www.allroundautomations.com/bodyplsqldev100.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 11:18:39 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
DimaBrЕсли присмотреться, то обе части одинаковые Код: pascal 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. Дима, по ходу, тебе самому пора к окулисту - советую как специалист, видящий разницу между a1 ON a1.id и a ON a.id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 11:22:28 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
ЁлыПалыне прижились они у него, говорит :)мускл может и не умеет рефкурсоры по динамическим запросам вертать из процедур но уж резалтсеты-то в принципе должен наверное ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 11:43:17 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
ma1tus, Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 11:47:37 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
под ванДима, по ходу, тебе самому пора к окулисту - советую как специалист, видящий разницу между a1 ON a1.id и a ON a.id Серьёзно ? А ничего, что в первом алиас А, а во втором А1. Это что-то меняет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 12:48:36 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
DimaBrпод ванДима, по ходу, тебе самому пора к окулисту - советую как специалист, видящий разницу между a1 ON a1.id и a ON a.id Серьёзно ? А ничего, что в первом алиас А, а во втором А1. Это что-то меняет ? Это издержки кода. Конечно можно в обоих случаях оставить A. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 15:21:23 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Virtual Studentsvnvlad, По моему ситуация идеальная для того, чтобы использовать представления (view). Практически все БД имеют такую возможность. Создав из этого запроса представление вы избавитесь от необходимости подгружать sql-портянку. Переменные можно передавать параметрами. А каким образом можно использовать параметры во вьюшках? Я не нашел. Был где-то обходной маневр, но это не рекомендовалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 15:22:21 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
Начал разбираться с хранимыми процедурами, пока не очень понимаю, или туплю, если вместо внутреннего скалярного подзапроса вставить хранимку с параметрами, то как осуществлять ее вызов, если туда надо передать значения внешнего запроса? Там ведь есть участок, где скалярный подзапрос соединяется с внешним: Код: pascal 1. 2. 3. 4. 5. 6. 7. Вот с этим внешним запросом Код: pascal 1. 2. 3. 4. 5. 6. 7. И как CALL MyProc() отобразить в запросе как значение поля, то что было вот этим? Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 15:32:18 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
DimaBrЕсли присмотреться, то обе части одинаковые Код: pascal 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. Они все-таки не совсем одинаковые. В первой джойн идет с таблицей iwn, во второй - с таблицей e. Во второй есть строка WHERE e.show_in_report = ''Y''. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 15:44:29 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvladА каким образом можно использовать параметры во вьюшках? Я не нашел. Был где-то обходной маневр, но это не рекомендовалось. Никаким, вьюшки это объединение таблиц svnvladпока не очень понимаю, или туплю, если вместо внутреннего скалярного подзапроса вставить хранимку с параметрами, то как осуществлять ее вызов Весь нужный запрос пишется в хранимой процедуре, а из Delphi вызывается эта хранимка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 15:50:43 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvladкаким образом можно использовать параметры во вьюшках?тупо к select from view приделывать where-clause в надежде что сервер сдюжит, сам подобным грешен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 15:52:13 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvladОни все-таки не совсем одинаковые. В первой джойн идет с таблицей iwn, во второй - с таблицей e. Во второй есть строка WHERE e.show_in_report = ''Y''. Это не важно, бОльшая часть подзапроса одинаковая, а это значит что её можно вынести в константу. Ну а переход на SP гораздо симпатичнее и удобнее править в дальнейшем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 15:53:13 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
DimaBrsvnvladпока не очень понимаю, или туплю, если вместо внутреннего скалярного подзапроса вставить хранимку с параметрами, то как осуществлять ее вызов Весь нужный запрос пишется в хранимой процедуре, а из Delphi вызывается эта хранимка А если саму хранимку написать с использованием вложенных хранимок, чтобы не писать один и тот же код много раз, там ведь есть много больших повторяющихся кусков (получение скалярных значений). Уже понял, что надо функцию писать, а не процедуру. А как с передачей в нее параметров внешнего запроса? То, что заменило бы джойн с внешним запросом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 15:53:20 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvladкак с передачей в нее параметров внешнего запроса? То, что заменило бы джойн с внешним запросомне уверен что понял о чем речь но можно предварительно напихать в отдельную соединяемую таблицу(-ы) (по вкусу временную или gtt) что требуется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 15:59:08 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
vavansvnvladкак с передачей в нее параметров внешнего запроса? То, что заменило бы джойн с внешним запросомне уверен что понял о чем речь но можно предварительно напихать в отдельную соединяемую таблицу(-ы) (по вкусу временную или gtt) что требуется Вот это Код: pascal 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. 49. 50. 51. 52. 53. 54. 55. 56. Преобразовать вот в это Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Корректно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 16:09:34 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvlad, мне столько не выпить чтоб подобные портяны разбирать, даже с учетом что я ночью улетаю на конфу по smartdata. соорудил бы примитивную демонстрацию что ли для разнообразия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2017, 16:17:16 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
vavansvnvlad, мне столько не выпить чтоб подобные портяны разбирать, даже с учетом что я ночью улетаю на конфу по smartdata. соорудил бы примитивную демонстрацию что ли для разнообразия Функция: Код: sql 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. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. Вызов функции в качестве скалярного подзапроса: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2017, 01:52:49 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#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. 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. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2017, 07:09:23 |
|
||
|
Ошибка - слишком длинная процедура
|
|||
|---|---|---|---|
|
#18+
svnvlad, главное, че-то никто не посоветовал убрать НЕОБЯЗАТЕЛЬНОЕ слово INNER. Вместе с пробелом 6 байт неоднократно бы сэкономилось. p.s. слова INNER и OUTER - необязательные. Прошу это запомнить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2017, 21:59:01 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2041700]: |
0ms |
get settings: |
7ms |
get forum list: |
26ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
173ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
113ms |
get tp. blocked users: |
2ms |
| others: | 193ms |
| total: | 532ms |

| 0 / 0 |
