Konstantin R. Beliaev wrote:
> Еще Ann или Helen приводили пример хранимки, превращающей строку в датасет.
<...>
Да и не только они:
create or alter procedure CONVERT_STRING_TO_ROWSET (
STRING varchar(32700),
SEPARATOR char(1) = ';')
returns (
ROW varchar(255))
AS
/*
----- Original Message -----
From: "sasha" <[email protected]>
Newsgroups: gmane.comp.db.firebird.russian
To: <ru-firebird-/[email protected]>
Sent: Monday, October 29, 2007 2:35 PM
Subject: Re: Подготовленный запрос с in
>
>> Спасибо, попробую
>
> Мы как-то года полтора назад сравнивали скорость IN (более 1000
> элементов) и джойна с процедурой, которая парсит строку. С процедурой
> быстрее в разы. Могу даже примером процедуры для парсинга поделиться
*/
begin
Separator = coalesce(Separator, ';');
Row = '';
while (String != '') DO
begin
if (substring(String from 1 for 1) != Separator) then
Row = Row || substring(String from 1 for 1);
else
begin
suspend;
Row = '';
end
String = substring(String from 2);
end
if (Row != '') then
suspend;
end