К>> Не было-бы логичным добавить указание какому параметру приходится тот
К>> или иной аргумент ? Например:
К>> select * from test(Param1 = 3, Param3 = 10);
AC> Предлагаю расширить концепцию на языки программирования высочайшего уровня.
AC> Внедрить предлагаемую конструкцию в Pascal, C#, и прочая.
На самом деле у меня так и есть :) - всё приложение написано
на Pascal подобном скриптовом движке в котором, кстати,
реализована данныя фишка ...
Кстати после реализации онной мне стало намного легче
реализовывать некоторые "весчи" :) ...
Кстати + 4-й пункт:
Возможность более просто реализовывать выборки
по выбору пользователя без написания громоздких парсеров.
(Идея придумана на ходу - так что не взыщите за корявость)
Обьясню, например есть процедура токорая считает оборот деньжат
(простейший вариант))
create prcedure Calc_money(DateFrom date = null,
DateTo date = null,
GroupKontr bitint = 0 /* Top */,
IDKontragent bigint = -1 /* No Selected */)
begin
if (DateFrom is null) then DateFrom = current_date;
if (DateTo is null) then DateTo = current_date;
/* Procedure text */
end;
Далее контролы именуем точно как параметры и вешаем один
обработчик на всё контролы выбора параметров отчёта
procedure OnChange(Sender : TObject);
begin
if not Rep.FindParam(Sender.Name)
then Rep.Sql.Text := ReplaceString(Rep.Sql.Text, ');',
', :' + Sender.Name + ');', []);
Rep.ParamByName(Sender.Name).Value := TBaseEdit(Sender).Value;
end;
Итого облегчается:
1. Добавление нового параметра
2. Нахождение глюка
3. Читабельность
4. Унификация
PS: Кстати на глубокое {TO-DO} было-бы интерестно приклеить
к параметрам по умолчанию возможность не статических default
параметров. Лично мне, например, было-бы комфортнее имей я
возможность написать что-то типа:
create prcedure Calc_money(DateFrom date = current_date,
или
create prcedure Calc_Doc(DocId bigint = 0,
DateFrom date = (select date from vw_Doc where id = :DocID),
насчёт ценности последнего - не знаю может и лишнее но первое
точно было-бы кстати.
Хотя я прекрастно понимаю что реализовать это будет сложно :(
PPS (to Max Rezanov):
Ну как я "курю" ?
По моему и у нас на Украине "трава" ничего попадается ;))))))
С уважением,
Константин Григорьевич.
===============