|
|
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
makhaon, У меня в классе есть метод выполняющий запросы Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Есть методы через которые запросы отправляються Код: pascal 1. 2. 3. 4. С таким запросом проблем нет, а вот если в запрос необходимо передать параметр например 'select ID,NAME from CLIENTS where id=:id_client' нехочеться в сам запрос вставлять переменные например ('select ID,NAME from CLIENTS where id='+id_client ) а передавать через ParamByName ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 13:55:23 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
Sashaua, Можно в сделать не процедуру, а функцию, которая вернет Query. Что-то в таком роде (только каркас): Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 14:27:34 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
Установку транзакции и соединения, старт транзакции и т.п. - я опустил если что. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 14:29:36 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
DarkMaster, в этом случае лучше сделать следующий шаг, обойтись и без процедуры, и без функции, а воспользоваться нормальным компонентом, настроенным в дизайн-тайме. Функция типа "сделай запрос" нужна тогда, когда требуется реализовать какую-то мелочь, под которую жалко и несоразмерно использовать тяжёлую артиллерию. Впрочем, со временем я всё больше убеждаюсь, что потребность в таких функциях означает плохой дизайн приложения. Но тем не менее, в идеале API для неё выглядит примерно так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Три последних, соответственно, пользуются первой. Первая нужна, например, для более эффективного фетча в случае долгих запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 14:38:53 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
Sashauamakhaon, У меня в классе есть метод выполняющий запросы Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Есть методы через которые запросы отправляються Код: pascal 1. 2. 3. 4. С таким запросом проблем нет, а вот если в запрос необходимо передать параметр например 'select ID,NAME from CLIENTS where id=:id_client' нехочеться в сам запрос вставлять переменные например ('select ID,NAME from CLIENTS where id='+id_client ) а передавать через ParamByName Для таких безобразий ("получить значение по-быстрому") класс, инкапсулирующий объект коннекта, имеет метод: Код: pascal 1. 2. 3. Код: pascal 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 14:58:32 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
softwarer, В одном проекте видел функционал, завязанный именно на динамическое создание Query. Такое впечатление, что пытались эмулировать LINQ или сгородить что-то свое. Пользоваться в принципе можно было, но я бы такого не делал, если проект большой достаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 16:06:03 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
softwarerDarkMaster, Функция типа "сделай запрос" нужна тогда, когда требуется реализовать какую-то мелочь, под которую жалко и несоразмерно использовать тяжёлую артиллерию. Поделюсь и своими наблюдениями :) Есть кучка подразделений, которым нужно время от времени посмотреть какой-то отчет (отчеты разные, часто меняются/дополняются). Для этого сделали подсистему, которая умеет строить список доступных для пользователя отчетов, брать текст SQL запроса из БД, при наличии параметров - строить форму для их ввода, выводить результаты в сетку и экспортировать при необходимости куда нужно. Весь код (подсистемы) влез в пару экранов + 1 dfm (форма с PageControl) - все делается с помощью динамически создаваемых Query. Вся работа по поддержке - написать запрос и внести его в специальную табличку вместо постоянной возьни в IDE с настройками в design-time. Как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 16:17:03 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#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. Тут парочка частных функций. И местами частное исполнение. Но, думаю, идея будет понятна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 17:02:33 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
makhaon, что это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 17:12:36 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
чччДmakhaon, что это? Попытка применить параметры только для INSERT/UPDATE видимо. О том, что параметры могут быть для SELECT - догадываются, но значения не придают. О том, что двойные кавычки вполне себе легитимный символ для некоторых SQL серверов и даже диалектов внутри одного SQL сервера - наверное тоже. Ну и так - по мелочи (экранируемые символы по идее тоже лесом пойдут - не всматривался). Но это я так - брюзжу по-стариковски. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 17:48:15 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
DarkMasterпараметры могут быть для SELECTи для execute. И прбелы могут вначале быть или другие незначащие символы. И Transaction может быть =nil... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 18:00:40 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
DarkMaster, я же написал - частный случай. для моего, частного, случая (FB), работает отлично 10+ лет. нужно - дописывайте по образу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 18:27:04 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
YuRock, автори для execute. И прбелы могут вначале быть или другие незначащие символы. И Transaction может быть =nil... у меня не может быть. ни то, ни другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 18:28:44 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
makhaonМогу кинуть самый главный кусок функции. Код: 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. Тут парочка частных функций. И местами частное исполнение. Но, думаю, идея будет понятна. А что оно делает ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 18:33:38 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
schi, Оно делает запросы с параметрами из просто запросов. Удобно - написал запрос и забыл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 18:36:53 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
makhaonDarkMaster, я же написал - частный случай. для моего, частного, случая (FB), работает отлично 10+ лет. нужно - дописывайте по образу. Та у меня собственно никаких претензий и нет - у самого лисапед такой системы в сарае припрятан :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 18:37:24 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
makhaonschi, Оно делает запросы с параметрами из просто запросов. Удобно - написал запрос и забыл.А почему нельзя имена параметров ставить такими же, как имена полей? Я лично так делаю и потом их заполнение - наглядно и понятно. Передаю в подобную ф-цию имя таблицы и массив-список полей, и генерится такое: INSERT INTO TABLE(ID,NAME) VALUES(:ID,:NAME) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 18:46:49 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
YuRock, 1. Не стоит этот код воспринимать как догму :) Но как идею. Как будет реализовано - на усмотрение. Так называть, или по-другому, как удобно. 2. Мне удобно тем, что я пишу: Код: pascal 1. 2. Функция сама разберется с параметрами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 18:56:33 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
makhaonYuRock, 1. Не стоит этот код воспринимать как догму :) Но как идею. Как будет реализовано - на усмотрение. Так называть, или по-другому, как удобно. 2. Мне удобно тем, что я пишу: Код: pascal 1. 2. Функция сама разберется с параметрами. Ниче не понял. Если ты уже значения туда загнал, зачем тогда параметры уже? Чтоб потом их поменять можно было еще? Ну так вот, менять их нагляднее, когда они называются как поля, а не Param1, Param2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 19:20:23 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
makhaon2. Мне удобно тем, что я пишу: А инъектор о своём удобстве скромно умалчивает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 19:25:12 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
YuRock, авторНиче не понял. Если ты уже значения туда загнал, зачем тогда параметры уже? затем, что на инсертах и апдейтах на некоторых серверах (подробностей за давностью не помню) просто не работает, валится с исключениями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 20:50:06 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
makhaonschi, Оно делает запросы с параметрами из просто запросов. Удобно - написал запрос и забыл. "Каждой хозяйке и не надо покупать этот агрегат. Его одного на весь город хватит. Он будет установлен где-нибудь в центре города, скажем, на Невском. И там будет оборудован ЕГКОЦ - Единый Городской Консервооткрывательный Центр. Это очень удобно. Вот, скажем, пришли к тебе гости, надо для них шпроты открыть. Ты просто берёшь свою консервную банку, быстренько выходишь на улицу, едешь в ЕГКОЦ. Там сдаёшь банку приёмщице, платишь пять копеек новыми и получаешь квитанцию. Приёмщица наклеивает на банку ярлычок и ставит её на конвейер. А ты идёшь себе в зал ожидания, садишься в кресло и смотришь короткометражный фильм на консервную тему. Вскоре тебя вызывают к окошечку, ты предъявлять квитанцию, получаешь открытую банку и спокойненько едешь домой на Васильевский. Удобно, правда?" Вадим Шефнер, "Скромный гений" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 20:58:41 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
Жаль, что мы так и не услышали начальника транспортного цеха. Михаил Жванецкий, "Собрание на ликеро-водочном заводе" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 22:04:01 |
|
||
|
Насчет свойств формирования SQL запроса
|
|||
|---|---|---|---|
|
#18+
makhaonYuRock, авторНиче не понял. Если ты уже значения туда загнал, зачем тогда параметры уже? затем, что на инсертах и апдейтах на некоторых серверах (подробностей за давностью не помню) просто не работает, валится с исключениями.Некоторые сервера не поддерживают инсертов с константами? Только с параметрами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2017, 22:47:40 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39558560&tid=2041524]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
83ms |
get tp. blocked users: |
2ms |
| others: | 217ms |
| total: | 418ms |

| 0 / 0 |
