"Мадорский Г.В." ...
>
> >> >
> >> >    EXECUTE STATEMENT
> >>
> >> усугубляем ? :)
> >
> >    Не нада догм ;)
> >
> Присоединюсь к "усугубляем ". Вот гляди :
>
>   INSERT INTO "_WbsElements" (
> "Id", "ProjectId", "VersionId", "SourceId", "Name", "Wbs", "WbsLevel",
>        "WbsElementTypeId", "BottomUpStartDate", "StartDate",
> "TopDownStartDate", "BottomUpFinishDate",
>        "FinishDate", "TopDownFinishDate", "Duration",
> "TimePhasedTypeId", "TimePhasedUnitId",
>        "TimePhasedValue", "ActivityStatusId", "Notes")
>      SELECT :"DestinationTaskId", :"DestinationProjectId", 0,
> :"SourceTaskId", "Name", "Wbs", "WbsLevel",
>          "WbsElementTypeId", "BottomUpStartDate", "StartDate",
> "TopDownStartDate", "BottomUpFinishDate",
>          "FinishDate", "TopDownFinishDate", "Duration",
> "TimePhasedTypeId", "TimePhasedUnitId",
>          "TimePhasedValue", "ActivityStatusId", "Notes"
>        FROM "Tasks" WHERE "Id" = :"SourceTaskId";
>
> Пока в ES все эти кавыки впихнешь - крышу точно сорвет нафиг... :)))

    А кто заставляет-то писать именно так ???

    Вот - на коленке нашёл :

s = "";
for select """" || rdb$field_name || """"
  from rdb$relation_fields
 where rdb$relation_name = :rel_name
   and :def_flds like "," || rdb$field_name || ","
  into :fld
do if (s = "")
   then s = fld
   else s = s || ", " || fld;

s_from = s;
s_to   = s;

// добавляем остальные поля с транформациями, этот список постоянен,
// или передаётся "сверху"

s = "INSERT INTO " || :rel_name || " (" || :s_to || ") " || :s_from ||
     " FROM " || :rel_name || " WHERE " || s_where;

execute statement :s;

-- 
Хорсун Влад


Ответить