BEGIN
delete from SourceGroupIdenticalsSearch where SourceGroup_ID = :ASourceGroup_ID;
mForSearch = ASourceGroup_ID;
while (mForSearch <> '') do begin
mToken = ib_get_token(mForSearch, ';');
mForSearch = ib_delete_token(mForSearch, ';');
select count(*) from SourceGroupIdenticalsSearch
where SourceGroup_ID = :ASourceGroup_ID and ID = :mToken into mCount;
if (mCount = 0) then begin
insert into SourceGroupIdenticalsSearch (SourceGroup_ID, ID)
values (:ASourceGroup_ID, :mToken);
for SELECT
Source_ID, Target_ID FROM SourceGroupIdenticals
where
Source_ID = :mToken or Target_ID = :mToken
INTO
mSource, mTarget
DO begin
if (mSource = :mToken) then
mToken2= mTarget;
else
mToken2 = mSource;
/* Ted mam v mToken tu druhou stranu */
select count(*) from SourceGroupIdenticalsSearch
where SourceGroup_ID = :ASourceGroup_ID and ID = :mToken2 into mCount;
if ((mCount = 0) and (ib_find_token(mForSearch, mToken2) = 0)) then begin
/* Pokud jsem ho jeste neznal tak ho pridam */
if (mForSearch <> '') then
mForSearch = mForSearch || ';';
mForSearch = mForSearch || mToken2;
end
end
end
end
/* to co se naslo vratim */
for select ID
from SourceGroupIdenticalsSearch
where SourceGroup_ID = :ASourceGroup_ID
into ID
do
suspend;
END