Есть-ли какой-нибудь аналог макроподстановки в ХП

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
KVas
Сообщения: 31
Зарегистрирован: 01 июн 2005, 16:01

Есть-ли какой-нибудь аналог макроподстановки в ХП

Сообщение KVas » 11 дек 2005, 15:55

Уважаемые знатоки!
Как можно реализовать хранимую процедуру под Firebird 1.5.2 такаким образом, что бы она получив в качестве входных параметров Param_1 ='Limit*0.1' и Param_2='Table' смогла реализовать запрос:
select Limit*0.1 from Table into :Result
Конструкция select :Param_1 from :Param_2 into :Result не работает.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 11 дек 2005, 18:31

читай release notes к fb 1.5, про execute statement. там примеры и все такое. но будь осторожен. вообще так программы не пишут - рискуешь получить тормоза там, где их быть не должно, и совершенно невразумительный код приложений (куски на клиенте, куски в базе, все выполняется динамически - кошмар при тестировании и отладке).

KVas
Сообщения: 31
Зарегистрирован: 01 июн 2005, 16:01

Сообщение KVas » 13 дек 2005, 11:50

Спасибо за внятный ответ. Но поскольку авторы рекомендуют пользоваться execute statement только когда по другому ну никак - рискну огласить саму задачку, мож кто уже её делал и подскажет чё-нить более дельное. Мне нужно написать процедуру для расчета алгоритма. В теле алгоритма использованы поля таблицы и названия хранимых процедур, которые имеют входные параметры и возвращают значение, а также, конечно, знаки арифметических действий и скобки; он может имет такой вид (S_Id(300)-Limit)*0.1. Сам алгоритм хранится в поле записи, скажем Algoritm. Хотелось бы написать ХП, например CalcAlg, что бы получать результат, например после выполнения следующего зпроса select Result from CalcAlg(Algoritm). В DOS-варианте этой проги никаких проблем не было, этот вопрос решался одной строкой Result=&Algoritm и в Clipper и в FoxPro. А в Delphi+Firebird никак не могу найти приемлемое решение, а жаль, очень удобный иструмент. Собственно задачку-то я решил (в основном средствами Delphi) и готов поделиться с коллегами, но мой подход работает о-о-ччень м е д л е н н о. Теперь вот пытаюсь нашрайбать решение через ХП в Firebird. Если решение получится изящным и работать будет с приемлемой скоростью, непременно поделюсь, тока вот засела мысль занозой - а не изобретаю-ли я велосипед...
Буду благодарен за любые мысли по этому вопросу, поскольку признаЮсь, с инструментарием для написания ХП в Firebird знаком пока только поверхносно.

P.S. Слышал про книгу Хелен Борри по Firebird, мож кто знает как её купить на Украине.

Ответить