|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
Доброе время суток, в некоторых случаях отказаться от execute statement не получается и встаёт вопрос а как наложить зависимости на участников execute statement. До сих пор приходилось выкручиваться через type of column для входных, выходных и прочих переменных. Но зачастую в строке запроса используются поля которые незачем куда то вытаскивать создавая для них переменные или выходные параметры а зависимость на них и их содержащие таблицы должна существовать. Как Вы поступаете в подобных случаях? не рисовать же рядом тупо запросы которые ничего не возвращают или переменные (c type of column) которые никому не нужны дабы только создать на них зависимость? возможно есть другая, более красивая, возможность прописать зависимость без извращений, которая мне неизвестна? Идеален был бы просто оператор создания зависимости, но найти такой мне не удалось. поделитесь ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 11:58 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
я уже поднимал раньше эту тему тут но красивого решения не вижу и по сей день ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 12:02 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenko, >в некоторых случаях отказаться от execute statement не получается честно говоря мне приходит в голову только соединение с внешней базой и создание метаданных >встаёт вопрос а как наложить зависимости на участников execute statement нормально никак. Только через изврат с невызываемыми операторами. >Идеален был бы просто оператор создания зависимости, но найти такой мне не удалось. потому что таких нет >возможно есть другая, более красивая, возможность прописать зависимость без извращений, которая мне неизвестна? не использовать execute statement там где он не нужен. Если нужна динамика собирай на клиенте execute block Лучше бы показали задачу где без execute statement не обойтись. Тогда может чего и подсказали бы ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 12:07 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
а... это снова байда про динамические сортировки и условия фильтрации пропихиваемые в ХП. Ну тогда увы ответа не будет. Там уже всё сказано было ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 12:16 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
и эти люди сетуют, что до них базу курочили "мальчики по вызову"... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 12:20 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
Мимопроходящийи эти люди сетуют, что до них базу курочили "мальчики по вызову"... В крупных проектах должен быть человек (измученный нарзаном), который может сказать - "что это вы тут за херню наворотили" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 12:34 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
Симонов ДенисMikhail Tchervonenko, .... Лучше бы показали задачу где без execute statement не обойтись. Тогда может чего и подсказали бы ну к примеру, ORDER BY создаётся динамически и список полей передаются в процедуру через запятую в виде строки и имена полей ещё надо допилить примерно так I_ORDER_BY = replace(I_ORDER_BY,'O_IDCOUNTRY','PARTNERS.id_country'); т.к. имена полей на клиенте отличаются от имен полей в базе (выходящие данные с префиксом O_, а исходящие с I_) сие не мои идеи по именованию и менять там что то уже поздно, да и никто не даст. (замечу что речь не всегда идёт о сортировке выходных данных в самом гриде, иногда это сортировка вромежуточных результатов в процедуре). а адея формирования блока на клиенте мне нравится не очень ввиду потенциальных проблем с универсальностью. Прийдётся отказаться от компонентов в виде допиленных Gridов которые автоматом сами передают список полей (с префиксом) в процедуру выборки. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 12:34 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
Мимопроходящийи эти люди сетуют, что до них базу курочили "мальчики по вызову"... это как раз пример танцев с результатами работы тех самых мальчиков. Когда приходишь и говоришь что все надо переделывать а тебе говорят нет, вы только тут и тут поправьте и улучшите. Все денег стоит. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 12:37 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
я собственно в основном эту дискуссию затеял зная что сюда разработчики заглядывают FB. Чем черт не шутит, если реализовали уж execute statement то почему не сделать и оператор создания зависимости, как раз для таких случаев. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 12:39 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenkoв некоторых случаях отказаться от execute statement не получается и встаёт вопрос а как наложить зависимости на участников execute statement.А зачем ? PS а как наложить зависимости на запросы, выдаваемые приложением ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 12:45 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
Mikhail TchervonenkoЧем черт не шутит, если реализовали уж execute statement то почему не сделать и оператор создания зависимостиЗависимости кого от чего ? Динамический запрос по своей сути неизвестен заранее и не предсказуем. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 12:47 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenko, хрень твоя идея с зависимостями. Ибо в качестве параметра сортировки мне никто не помешает передать Код: sql 1.
а можно и существующую. Если у вас часть запроса формируется на клиенте а часть хранится на сервере, то ту часть что хранится на клиенте никакими зависимостями не отследить. execute statement это фактически эмуляция динамически формируемых запросов приходящих с клиента. Да собственно в вашем случае часть запроса именно от туда и приходит ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 12:47 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
hvladMikhail Tchervonenkoв некоторых случаях отказаться от execute statement не получается и встаёт вопрос а как наложить зависимости на участников execute statement.А зачем ? PS а как наложить зависимости на запросы, выдаваемые приложением ? если под приложением понимается клиент то в идеале он вообще не должен работать с таблицами на прямую, только с хранимками. По крайней мере в том что пишу я нет ни одного запроса из таблицы напрямую, только из хранимок. Абсолютно 100%. Другими словами вся логика должна сидеть в базе. Это касается и проектов на FB и на MSSQL. Исключение только MySQL т.к. хранимки там появились сравнительно недавно и по отзывам ещё не всё допилено. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 12:54 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
hvladДинамический запрос по своей сути неизвестен заранее и не предсказуем. "как же так - ведь ES хранится в процедуре или триггере. ааааа!!!" :-) p.s. как мне повезло, что я "наелся" этих динамических конструкций в MUMPS, еще до SQL, и больше в коде на сервере ничего подобного не хочу. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 12:56 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenkoто в идеале он вообще не должен работать с таблицами на прямую, только с хранимками. это совершенно ошибочное мнение. Однако, никто не запрещает такой подход. При этом жевание кактуса с ES - исключительно ваши личные проблемы. Представьте себе, что ES вообще отсутствует. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 12:58 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenkoнет ни одного запроса из таблицы напрямую, только из хранимок. Абсолютно 100%. Ужоснах. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 13:00 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
Симонов ДенисMikhail Tchervonenko, хрень твоя идея с зависимостями. Ибо в качестве параметра сортировки мне никто не помешает передать Код: sql 1.
.... ну да, если туда пальцами набивать эти строки то конечно. А вот когда эти строки формирует компонент на клиенте на основе своих же свойств полей и ты знаешь что прийдёт в хранимку, то вопрос только в комбинации пришедшего и предварительной обработке. Заметьте, я хочу просто прописать в хранимке зависимости из execute statement. Остальные вопросы уже решены, и на клиенте нет логики на которую нужно накладывать эти зависимости. И походу, как уже писали раньше, кроме неисполняемого блока кода в этой хранимке, решения нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 13:02 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenkoесли под приложением понимается клиент то в идеале он вообще не должен работать с таблицами на прямую, только с хранимками. Есть рациональное зерно, и такой подход имеет право жить. Более того, в нашем проекте генерится код для вызова процедур в двух версиях: с query в виде первого параметра и без. Если передать Query, то результаты работы процедуры будут там. Многоярусные Delphi-строки забываются как страшный сон. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 13:04 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
Коваленко Дмитрий> В крупных проектах должен быть человек (измученный нарзаном), > который может сказать - "что это вы тут за херню наворотили" :) "Любой русский программист, после пары минут чтения кода, обязательно вскочит и произнесет, обращаясь к себе: переписать это все нафиг!" (с) Для тех кто не помнит этой фразы - древняя, но всё ещё актуальная притча: http://www.rushumor.com/stories/32.html Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 13:04 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenkoесли под приложением понимается клиент то в идеале он вообще не должен работать с таблицами на прямую, только с хранимками. По крайней мере в том что пишу я нет ни одного запроса из таблицы напрямую, только из хранимок. Абсолютно 100%. это не есть хорошо. По крайней мере процедуры выбора должны использоваться в крайнем случае когда без них не обойтись. Ибо оптимизатор лучше разрулит чистый запрос. Открой для себя вьюхи для более простых случаев. А уж джойн процедуры с процедурой это совсем гиблое дело. Частично конечно оптимизатор разруливает через HASH/MERGE JOIN, но результат не обязательно будет оптимальным. ибо оценить кардинальность ХП практически невозможно. Mikhail TchervonenkoДругими словами вся логика должна сидеть в базе. Это касается и проектов на FB и на MSSQL. для процедур модификации данных согласен. Хотя для всяких справочников можно сделать исключение. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 13:05 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
Mikhail TchervonenkoА вот когда эти строки формирует компонент на клиенте на основе своих же свойств полей ....то он с лёгкостью может составить запрос типа Код: sql 1.
Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 13:06 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenkoвозможно есть другая, более красивая, возможность прописать зависимость без извращений, которая мне неизвестна? Более красивой я не знаю. Пришлось писать своё. Выглядело так 7778565 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 13:07 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
Mikhail Tchervonenko, ну да ладно забьём на левые таблицы. Вот в трёшке появились пользовательские PSQL функции, а ещё они в пакетах могут сидеть. Удачи вам в разруливании всего этого когда начнёте их использовать в своих динамических запросах ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 13:12 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
Mikhail TchervonenkoИ походу, как уже писали раньше, кроме неисполняемого блока кода в этой хранимке, решения нет. есть DECLARE VARIABLE с TYPE OF. Вы написали это в первом посте. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 13:12 |
|
Создание зависимостей на поля и таблицы входящие в execute statement
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovMikhail Tchervonenkoнет ни одного запроса из таблицы напрямую, только из хранимок. Абсолютно 100%. Ужоснах. когдато, фирма для которой писали софт вызвала Gutachter, типа эксперт от мелкософта (проект был на MSSQL + С#) который лазил по проекту и выискивал в том числе и прямые обращения к таблицам (на уовне select и на уровне компонентов). И таки нашел пару забытых временных затычек, это стоило нам денег. Если проект должен без проблем работать на нескольких платформах и различных клиентах иного решения нет. Все остальное стоит гораздо дороже в итоге и по деньгам и по времени. И я с тим на все 100% согласен. Опыт неоднократно подтвердил правильность такого подхода. Опять же это позволяет гораздо лучше контроллировать те же зависимости, да и тестирование сильно упрощается. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2015, 13:12 |
|
|
start [/forum/topic.php?fid=40&msg=39003335&tid=1562712]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
others: | 261ms |
total: | 416ms |
0 / 0 |