GD P GETRUID
Материал из GedeminWiki
(Различия между версиями)
SYSDBA (обсуждение | вклад) (Новая страница: « <syntaxhighlight lang="SQL"> create or alter procedure GD_P_GETRUID ( ID integer) returns ( XID integer, DBID integer) as BEGIN XID = NULL; DBID = N…») |
SYSDBA (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
| + | |||
| + | Процедура применяется для получения и/или создания РУИДа объекта. Следующий запрос покажет РУИДы для записей из таблицы [[GD_CONTACT]]: | ||
| + | |||
| + | <syntaxhighlight lang="SQL"> | ||
| + | SELECT | ||
| + | c.id, c.name, r.xid, r.dbid | ||
| + | FROM | ||
| + | gd_contact c JOIN gd_p_getruid(c.id) r ON 1=1 | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | Отсутствующие РУИДы будут созданы в процессе выполнения данного запроса. | ||
| + | |||
| + | ====Исходный код==== | ||
<syntaxhighlight lang="SQL"> | <syntaxhighlight lang="SQL"> | ||
| Строка 38: | Строка 51: | ||
END | END | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| + | |||
| + | ====См. также==== | ||
| + | |||
| + | * [[RUID]] | ||
[[Category:База данных]] | [[Category:База данных]] | ||
Версия 20:51, 4 августа 2013
Процедура применяется для получения и/или создания РУИДа объекта. Следующий запрос покажет РУИДы для записей из таблицы GD_CONTACT:
SELECT c.id, c.name, r.xid, r.dbid FROM gd_contact c JOIN gd_p_getruid(c.id) r ON 1=1
Отсутствующие РУИДы будут созданы в процессе выполнения данного запроса.
Исходный код
CREATE OR ALTER PROCEDURE GD_P_GETRUID ( ID INTEGER) RETURNS ( XID INTEGER, DBID INTEGER) AS BEGIN XID = NULL; DBID = NULL; IF (NOT :ID IS NULL) THEN BEGIN IF (:ID < 147000000) THEN BEGIN XID = :ID; DBID = 17; END ELSE BEGIN SELECT xid, dbid FROM gd_ruid WHERE id=:ID INTO :XID, :DBID; IF (XID IS NULL) THEN BEGIN XID = ID; DBID = GEN_ID(gd_g_dbid, 0); INSERT INTO gd_ruid(id, xid, dbid, modified, editorkey) VALUES(:ID, :XID, :DBID, CURRENT_TIMESTAMP, NULL); END END END SUSPEND; END