powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Создание зависимостей на поля и таблицы входящие в execute statement
25 сообщений из 101, страница 1 из 5
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003245
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток,

в некоторых случаях отказаться от execute statement не получается и встаёт вопрос а как наложить зависимости на участников execute statement. До сих пор приходилось выкручиваться через type of column для входных, выходных и прочих переменных. Но зачастую в строке запроса используются поля которые незачем куда то вытаскивать создавая для них переменные или выходные параметры а зависимость на них и их содержащие таблицы должна существовать. Как Вы поступаете в подобных случаях?

не рисовать же рядом тупо запросы которые ничего не возвращают или переменные (c type of column) которые никому не нужны дабы только создать на них зависимость?

возможно есть другая, более красивая, возможность прописать зависимость без извращений, которая мне неизвестна?

Идеален был бы просто оператор создания зависимости, но найти такой мне не удалось.

поделитесь
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003251
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я уже поднимал раньше эту тему тут
но красивого решения не вижу и по сей день
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003258
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail Tchervonenko,

>в некоторых случаях отказаться от execute statement не получается
честно говоря мне приходит в голову только соединение с внешней базой и создание метаданных

>встаёт вопрос а как наложить зависимости на участников execute statement
нормально никак. Только через изврат с невызываемыми операторами.

>Идеален был бы просто оператор создания зависимости, но найти такой мне не удалось.
потому что таких нет

>возможно есть другая, более красивая, возможность прописать зависимость без извращений, которая мне неизвестна?
не использовать execute statement там где он не нужен. Если нужна динамика собирай на клиенте execute block

Лучше бы показали задачу где без execute statement не обойтись. Тогда может чего и подсказали бы
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003266
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а... это снова байда про динамические сортировки и условия фильтрации пропихиваемые в ХП. Ну тогда увы ответа не будет. Там уже всё сказано было
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003273
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и эти люди сетуют, что до них базу курочили "мальчики по вызову"...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003284
Коваленко Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийи эти люди сетуют, что до них базу курочили "мальчики по вызову"...


В крупных проектах должен быть человек (измученный нарзаном), который может сказать - "что это вы тут за херню наворотили" :)
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003285
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисMikhail Tchervonenko,
....
Лучше бы показали задачу где без execute statement не обойтись. Тогда может чего и подсказали бы
ну к примеру, ORDER BY создаётся динамически и список полей передаются в процедуру через запятую в виде строки и имена полей ещё надо допилить примерно так I_ORDER_BY = replace(I_ORDER_BY,'O_IDCOUNTRY','PARTNERS.id_country');
т.к. имена полей на клиенте отличаются от имен полей в базе (выходящие данные с префиксом O_, а исходящие с I_)
сие не мои идеи по именованию и менять там что то уже поздно, да и никто не даст. (замечу что речь не всегда идёт о сортировке выходных данных в самом гриде, иногда это сортировка вромежуточных результатов в процедуре).

а адея формирования блока на клиенте мне нравится не очень ввиду потенциальных проблем с универсальностью. Прийдётся отказаться от компонентов в виде допиленных Gridов которые автоматом сами передают список полей (с префиксом) в процедуру выборки.
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003291
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийи эти люди сетуют, что до них базу курочили "мальчики по вызову"...

это как раз пример танцев с результатами работы тех самых мальчиков. Когда приходишь и говоришь что все надо переделывать а тебе говорят нет, вы только тут и тут поправьте и улучшите. Все денег стоит.
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003297
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я собственно в основном эту дискуссию затеял зная что сюда разработчики заглядывают FB. Чем черт не шутит, если реализовали уж execute statement то почему не сделать и оператор создания зависимости, как раз для таких случаев.
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003302
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail Tchervonenkoв некоторых случаях отказаться от execute statement не получается и встаёт вопрос а как наложить зависимости на участников execute statement.А зачем ?

PS а как наложить зависимости на запросы, выдаваемые приложением ?
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003303
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail TchervonenkoЧем черт не шутит, если реализовали уж execute statement то почему не сделать и оператор создания зависимостиЗависимости кого от чего ? Динамический запрос по своей сути неизвестен заранее и не предсказуем.
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003305
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail Tchervonenko,

хрень твоя идея с зависимостями. Ибо в качестве параметра сортировки мне никто не помешает передать

Код: sql
1.
order by (select count(*) from non_existing_table)



а можно и существующую. Если у вас часть запроса формируется на клиенте а часть хранится на сервере, то ту часть что хранится на клиенте никакими зависимостями не отследить. execute statement это фактически эмуляция динамически формируемых запросов приходящих с клиента. Да собственно в вашем случае часть запроса именно от туда и приходит
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003316
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladMikhail Tchervonenkoв некоторых случаях отказаться от execute statement не получается и встаёт вопрос а как наложить зависимости на участников execute statement.А зачем ?

PS а как наложить зависимости на запросы, выдаваемые приложением ?

если под приложением понимается клиент то в идеале он вообще не должен работать с таблицами на прямую, только с хранимками. По крайней мере в том что пишу я нет ни одного запроса из таблицы напрямую, только из хранимок. Абсолютно 100%. Другими словами вся логика должна сидеть в базе. Это касается и проектов на FB и на MSSQL. Исключение только MySQL т.к. хранимки там появились сравнительно недавно и по отзывам ещё не всё допилено.
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003319
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladДинамический запрос по своей сути неизвестен заранее и не предсказуем.
"как же так - ведь ES хранится в процедуре или триггере. ааааа!!!"

:-)

p.s. как мне повезло, что я "наелся" этих динамических конструкций в MUMPS, еще до SQL, и больше в коде на сервере ничего подобного не хочу.
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003322
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail Tchervonenkoто в идеале он вообще не должен работать с таблицами на прямую, только с хранимками.
это совершенно ошибочное мнение. Однако, никто не запрещает такой подход. При этом жевание кактуса с ES - исключительно ваши личные проблемы. Представьте себе, что ES вообще отсутствует.
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003325
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail Tchervonenkoнет ни одного запроса из таблицы напрямую, только из хранимок.
Абсолютно 100%.
Ужоснах.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003328
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисMikhail Tchervonenko,

хрень твоя идея с зависимостями. Ибо в качестве параметра сортировки мне никто не помешает передать

Код: sql
1.
order by (select count(*) from non_existing_table)



....

ну да, если туда пальцами набивать эти строки то конечно. А вот когда эти строки формирует компонент на клиенте на основе своих же свойств полей и ты знаешь что прийдёт в хранимку, то вопрос только в комбинации пришедшего и предварительной обработке.
Заметьте, я хочу просто прописать в хранимке зависимости из execute statement. Остальные вопросы уже решены, и на клиенте нет логики на которую нужно накладывать эти зависимости. И походу, как уже писали раньше, кроме неисполняемого блока кода в этой хранимке, решения нет.
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003332
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail Tchervonenkoесли под приложением понимается клиент то в идеале он вообще не должен работать с таблицами на прямую, только с хранимками.
Есть рациональное зерно, и такой подход имеет право жить. Более того, в нашем проекте генерится код для вызова процедур в двух версиях: с query в виде первого параметра и без. Если передать Query, то результаты работы процедуры будут там. Многоярусные Delphi-строки забываются как страшный сон.
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003333
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коваленко Дмитрий> В крупных проектах должен быть человек (измученный нарзаном),
> который может сказать - "что это вы тут за херню наворотили" :)
"Любой русский программист, после пары минут чтения кода,
обязательно вскочит и произнесет, обращаясь к себе: переписать это все нафиг!"
(с)

Для тех кто не помнит этой фразы - древняя, но всё ещё актуальная притча:
http://www.rushumor.com/stories/32.html
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003334
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail Tchervonenkoесли под приложением понимается клиент то в идеале он вообще не должен работать с таблицами на прямую, только с хранимками. По крайней мере в том что пишу я нет ни одного запроса из таблицы напрямую, только из хранимок. Абсолютно 100%.

это не есть хорошо. По крайней мере процедуры выбора должны использоваться в крайнем случае когда без них не обойтись. Ибо оптимизатор лучше разрулит чистый запрос. Открой для себя вьюхи для более простых случаев. А уж джойн процедуры с процедурой это совсем гиблое дело. Частично конечно оптимизатор разруливает через HASH/MERGE JOIN, но результат не обязательно будет оптимальным. ибо оценить кардинальность ХП практически невозможно.


Mikhail TchervonenkoДругими словами вся логика должна сидеть в базе. Это касается и проектов на FB и на MSSQL.

для процедур модификации данных согласен. Хотя для всяких справочников можно сделать исключение.
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003335
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail TchervonenkoА вот когда эти строки формирует компонент на клиенте на основе
своих же свойств полей
....то он с лёгкостью может составить запрос типа
Код: sql
1.
select * from SP order by <эта самая строка>


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003337
afgm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail Tchervonenkoвозможно есть другая, более красивая, возможность прописать зависимость без извращений, которая мне неизвестна?
Более красивой я не знаю. Пришлось писать своё. Выглядело так 7778565
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003343
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail Tchervonenko,

ну да ладно забьём на левые таблицы. Вот в трёшке появились пользовательские PSQL функции, а ещё они в пакетах могут сидеть. Удачи вам в разруливании всего этого когда начнёте их использовать в своих динамических запросах
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003344
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
Mikhail TchervonenkoИ походу, как уже писали раньше, кроме неисполняемого блока кода в этой хранимке, решения нет.
есть DECLARE VARIABLE с TYPE OF. Вы написали это в первом посте.
...
Рейтинг: 0 / 0
Создание зависимостей на поля и таблицы входящие в execute statement
    #39003345
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovMikhail Tchervonenkoнет ни одного запроса из таблицы напрямую, только из хранимок.
Абсолютно 100%.
Ужоснах.

когдато, фирма для которой писали софт вызвала Gutachter, типа эксперт от мелкософта (проект был на MSSQL + С#) который лазил по проекту и выискивал в том числе и прямые обращения к таблицам (на уовне select и на уровне компонентов). И таки нашел пару забытых временных затычек, это стоило нам денег. Если проект должен без проблем работать на нескольких платформах и различных клиентах иного решения нет. Все остальное стоит гораздо дороже в итоге и по деньгам и по времени. И я с тим на все 100% согласен. Опыт неоднократно подтвердил правильность такого подхода. Опять же это позволяет гораздо лучше контроллировать те же зависимости, да и тестирование сильно упрощается.
...
Рейтинг: 0 / 0
25 сообщений из 101, страница 1 из 5
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Создание зависимостей на поля и таблицы входящие в execute statement
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]