К>>   Не было-бы логичным добавить указание какому параметру приходится тот
 К>>   или иной аргумент ? Например:

 К>>   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):
     Ну как я "курю" ?
     По моему и у нас на Украине "трава" ничего попадается ;))))))

С уважением,
Константин Григорьевич.
===============


Ответить