FIN PLACEKIND

Материал из GedeminWiki
Перейти к: навигация, поиск
/* Типы административно-территориальных единиц */
CREATE TABLE fin_placekind
(
  placekindkey  dintkey,         /* уникальный идентификатор                */
  grade         SMALLINT,        /* уровень, чем меньше, тем выше уровень   */
  name          dname,           /* наименование                            */
  abbr          dshorttext,      /* сокрашение                              */
  disabled      dboolean,
  stand         INTEGER,         /* положение типа в месте в адресе         */
  security      INTEGER,
  icon          INTEGER,
  reserved      INTEGER
);
 
ALTER TABLE fin_placekind ADD CONSTRAINT fin_pk_placekind
  PRIMARY KEY (placekindkey);
 
CREATE ASC INDEX fin_x_placekind_name
  ON fin_placekind (name);
 
CREATE ASC INDEX fin_x_placekind_grade
  ON fin_placekind (grade);
 
CREATE GENERATOR fin_g_placekindkey;
SET GENERATOR fin_g_placekindkey TO 2000;
 
SET TERM ^ ;
 
CREATE TRIGGER fin_insert_placekind FOR fin_placekind
  BEFORE INSERT
  POSITION 0
AS
BEGIN
  IF (NEW.placekindkey IS NULL) THEN NEW.placekindkey = GEN_ID(fin_g_placekindkey, 1);
 
  IF (NEW.grade IS NULL) THEN  NEW.grade = 200; /* страна */
 
  IF (NEW.disabled IS NULL) THEN NEW.disabled = 0; /* активен */
 
  IF (NEW.stand IS NULL) THEN NEW.stand = 1; /* предшествует наименованию места */
END;
^
 
/* генерит код нового вида населенного пункта */
CREATE PROCEDURE cst_p_placekindkey
  RETURNS (PlaceKindKey INTEGER)
AS
BEGIN
  PlaceKindKey = GEN_ID(fin_g_placekindkey, 1);
END;
^
 
/* список видов населенных пунктов по уровню */
CREATE PROCEDURE cst_p_placekindbygrade(Grade INTEGER)
  RETURNS (placekindkey INTEGER, name VARCHAR(60))
AS
BEGIN
  FOR
    SELECT placekindkey, name
    FROM fin_placekind
    WHERE grade = :grade
    INTO :placekindkey, :name
  DO
    SUSPEND;
END;
^
 
SET TERM ; ^
Персональные инструменты
Пространства имён

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