Поиск записи по заданному RUID

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
(Новая страница: «EXECUTE BLOCK, приведенный ниже, позволяет найти имя таблицы и ID записи с заданным RUID. <syntaxh…»)
 
 
Строка 1: Строка 1:
EXECUTE BLOCK, приведенный ниже, позволяет найти имя таблицы и [[ID]] записи с заданным [[RUID]].
+
EXECUTE BLOCK, приведенный ниже, позволяет найти имя таблицы и [[ID і RUID|ID]] записи с заданным [[RUID]].
  
 
<syntaxhighlight lang="SQL">
 
<syntaxhighlight lang="SQL">

Текущая версия на 11:53, 20 декабря 2021

EXECUTE BLOCK, приведенный ниже, позволяет найти имя таблицы и ID записи с заданным RUID.

EXECUTE BLOCK(XID INTEGER = :XID, DBID INTEGER = :DBID)
  RETURNS(RN VARCHAR(64), ID dforeignkey)
AS
BEGIN
  ID = NULL;
 
  SELECT id FROM GD_RUID WHERE xid = :XID AND dbid = :DBID INTO :ID;
 
  IF (:ID > 0) THEN
  BEGIN
    FOR
      SELECT DISTINCT
        r.rdb$relation_name
      FROM
        rdb$relation_fields rf JOIN rdb$relations r
          ON r.rdb$relation_name = rf.rdb$relation_name
        LEFT JOIN
          (
            SELECT relc.rdb$relation_name
            FROM
              rdb$relation_constraints relc JOIN rdb$ref_constraints refc
                ON refc.rdb$constraint_name = relc.rdb$constraint_name
              JOIN rdb$index_segments iseg
                ON iseg.rdb$index_name = relc.rdb$index_name
                  AND iseg.rdb$field_name = 'ID'
          ) constr ON constr.rdb$relation_name = r.rdb$relation_name
      WHERE
        rf.rdb$field_name = 'ID' AND r.rdb$relation_name <> 'TEMP'
          AND r.rdb$relation_name <> 'GD_RUID'
          AND r.rdb$view_source IS NULL
          AND constr.rdb$relation_name IS NULL
      INTO :RN
    DO BEGIN
      FOR
        EXECUTE STATEMENT 'SELECT id FROM ' || :RN || '  WHERE id > 32 AND id = ' || :ID
        INTO :ID
      DO
        SUSPEND;
    END
  END
END

[править] См. также

Персональные инструменты
Пространства имён

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