Метапеременные в SQL запросах

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
 
(HOLDINGLIST)
 
(не показаны 9 промежуточных версий 3 участников)
Строка 1: Строка 1:
Метапеременная -- это строковое выражение, имеющее определенный формат. Метапаременная может быть указана в любом месте SQL запроса. Перед выполнением запроса система Гедымин вместо метапеременных вставит в текст запроса соответствующие значения.
+
Метапеременная -- это строковое выражение, имеющее определенный формат. Метапеременная может быть указана в любом месте SQL запроса. Перед выполнением запроса система Гедымин вместо метапеременных вставит в текст запроса соответствующие значения.
  
 
В системе Гедымин можно использовать следующие метапеременные в SQL запросах:
 
В системе Гедымин можно использовать следующие метапеременные в SQL запросах:
Строка 34: Строка 34:
  
 
  select * from gd_document where bin_and(bin_or(aview, 1), <ingroup/>) <> 0
 
  select * from gd_document where bin_and(bin_or(aview, 1), <ingroup/>) <> 0
 +
 +
=== HOLDINGLIST ===
 +
Список идентификаторов компаний, входящих в холдинг, включая идентификатор текущей рабочей организации. Если текущая рабочая организация не является холдингом, то возвращает ее идентификатор.
 +
 +
Синтаксис:
 +
<HOLDINGLIST/>
 +
 +
Пример использования. Список сотрудников, принадлежащих всем компаниям [[Холдинг|холдинга]] (обратите внимание на использование кавычек при подстановке строкового параметра в SQL запрос):
 +
 +
select * from gd_people where wcompanykey in (<HOLDINGLIST/>)
  
 
=== RUID ===
 
=== RUID ===
Возвращает идентификатор записи в текущей базе данных по ее РУИДу.
+
Возвращает идентификатор записи в текущей базе данных по ее [[RUID|РУИДу]].
  
 
Синтаксис:
 
Синтаксис:
 
  <RUID XID="xid_number" DBID ="dbid_number"/>
 
  <RUID XID="xid_number" DBID ="dbid_number"/>
 +
 +
=== NCU ===
 +
Возвращает идентификатор Национальной денежной единицы (НДЕ).
 +
 +
Синтаксис:
 +
<NCU/>
 +
 +
== Использование метапеременных при запросе параметров ==
 +
 +
== Ограничение в использовании метапеременных ==
 +
Метапеременные нельзя использовать в триггерах, хранимых процедурах и представлениях, т.к. они (триггеры, хранимые процедуры и представления), хранятся в откомпилированном виде, и вместо метапеременных в них уже подставились их значения! И вместо запроса в процедуре
 +
  select * from gd_companyaccount where companykey = <COMPANYKEY/>
 +
на самом деле будет храниться что-то вроде
 +
  select * from gd_companyaccount where companykey = 147035939
 +
 +
[[Category:Документация]]
 +
[[Category:Руководство разработчика]]
 +
 +
__NOTOC__

Текущая версия на 12:56, 6 апреля 2017

Метапеременная -- это строковое выражение, имеющее определенный формат. Метапеременная может быть указана в любом месте SQL запроса. Перед выполнением запроса система Гедымин вместо метапеременных вставит в текст запроса соответствующие значения.

В системе Гедымин можно использовать следующие метапеременные в SQL запросах:

[править] COMPANYKEY

Идентификатор текущей (рабочей) компании.

Синтаксис:

<COMPANYKEY/>

Пример использования. Данный запрос извлечет из базы данных все банковские счета текущей организации:

select * from gd_companyaccount where companykey = <COMPANYKEY/>

[править] CONTACTKEY

Идентификатор текущего контакта (т.е. идентификатор контакта, соответствующего учетной записи текущего пользователя).

Синтаксис:

<CONTACTKEY/>

Пример использования. Имя текущего пользователя системы:

select name from gd_contact where id = <CONTACTKEY/>

[править] INGROUP

Битовый набор групп, в которые входит текущий пользователь.

Синтаксис:

<INGROUP/>

Пример использования. Список документов, правом на просмотр которых обладает текущий пользователь:

select * from gd_document where bin_and(bin_or(aview, 1), <ingroup/>) <> 0

[править] HOLDINGLIST

Список идентификаторов компаний, входящих в холдинг, включая идентификатор текущей рабочей организации. Если текущая рабочая организация не является холдингом, то возвращает ее идентификатор.

Синтаксис:

<HOLDINGLIST/>

Пример использования. Список сотрудников, принадлежащих всем компаниям холдинга (обратите внимание на использование кавычек при подстановке строкового параметра в SQL запрос):

select * from gd_people where wcompanykey in (<HOLDINGLIST/>)

[править] RUID

Возвращает идентификатор записи в текущей базе данных по ее РУИДу.

Синтаксис:

<RUID XID="xid_number" DBID ="dbid_number"/>

[править] NCU

Возвращает идентификатор Национальной денежной единицы (НДЕ).

Синтаксис:

<NCU/>

[править] Использование метапеременных при запросе параметров

[править] Ограничение в использовании метапеременных

Метапеременные нельзя использовать в триггерах, хранимых процедурах и представлениях, т.к. они (триггеры, хранимые процедуры и представления), хранятся в откомпилированном виде, и вместо метапеременных в них уже подставились их значения! И вместо запроса в процедуре

 select * from gd_companyaccount where companykey = <COMPANYKEY/>

на самом деле будет храниться что-то вроде

 select * from gd_companyaccount where companykey = 147035939
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты