Практика SQL#

Функции getmnemocode, getheadline и getattribute#

В SQL-запросе заместо получения хэдлайна, мнемокода или иного атрибута через join или подзапрос можно использовать функции getmnemocode, getheadline и getattribute.

--getmnemocode
getmnemocode(idpclass bigint, idpobj bigint)

getmnemocode(gid text)

--getheadline
getheadline(idpclass bigint, idpobj bigint)

getheadline(gid text)

--getattribute
getattribute(idpclass bigint, idpobj bigint, spattr text)

getattribute(pgid text, pattr text)

Данные процедуры можно использовать, если возвращается немногочисленные объекты, иначе на БД будет большая нагрузка.

Внимание

Нельзя использовать при формировании отчётов или отображения List.

Можно использовать для:

  • получения данных через onRefreshExt для отображение Card и ему подобных

  • печатных форм

  • для разового анализа данных через приложение управления БД (напримеир, dbeaver)

Примеры использования:

select    t.sRegNum
        , t.dReg        
        , t.idService          
        --для id нужно принудительно указать класс        
        , getmnemocode(51001,t.idService) idServiceMC         
        , getheadline(51001,t.idService) idServiceHL              
        --гид можно сразу передать на вход        
        , t.gidSrc        
        , getmnemocode(t.gidSrc) as gidSrcMC         
        , getheadline(t.gidSrc) as gidSrcHL        
        --getattribute  
        , getattribute('2101', t.idResourceholder, 'gid') gidResourceHolder         
        , getheadline(getattribute('2101', t.idResourceholder, 'gid')) as idResourceHolderHL  
from oil_tankerpos t

В разработке расширение методов:

--getmnemocode
getmnemocode(sNameTb text, idpobj bigint)

--getheadline
getheadline(sNameTb text, idpobj bigint)