Procedura-SYS$ConcatSelect

Popis:
Pomocná stored procedura pro tvorbu dynamických dotazů typu "field in (select dotaz)" . Pokud je položek v poddotazu víc jak 100, vrátí dotaz ve formě "field in (select dotaz)", jinak poddotaz provede a vrátí ve formě "field in (hodnoty SQL dotazu)".

Parametry:

NázevPopisDatový typ
ASQLFieldVarChar(256)
ASQLStatVarChar(8192)

Návratové hodnoty:

NázevPopisDatový typ
AResultVarChar(8192)

Tělo:

begin
  AResult = '';
  execute statement 'select count(*) from ' || ASQLStat into :mCount;
  if (:mCount > 100) then
    AResult  = 'select ' || ASQLField || ' from ' || ASQLStat;
  else begin
    for execute statement 'select ' || ASQLField || ' from ' || ASQLStat
    into :mVal do AResult = AResult || '''' || :mVal || ''',';
    if (AResult <> '') then
      AResult  = IB_STRING_LEFT(AResult, IB_STRING_LENGTH(AResult) - 1);
    else
      AResult  = '''''';
  end
  suspend;
end

Generated by ABRA Software a.s. 27.10.2021 16:34:18