You are here

Добавить комментарий

CREATE PROCEDURE - создать пользовательскую процедуру

Синтаксис

Описание

    CREATE PROCEDURE создает процедуру базы данных (подпрограмму/функцию) , которая может быть использована в командах SQL или в процедурах и программах.

    Пример:

CREATE PROCEDURE table_drop ( )
DROP TABLE proc_test;
END PROCEDURE; 

Создает процедуру 'table drop', которая удаляет при вызове таблицу 'proc_test'.

DBA

    Указывает на то, что процедура имеет при исполнении привилегии администратора.

    Пример:

CREATE DBA PROCEDURE table_create ( )
CREATE TABLE proc_test (
fid smallint,
ag smallint,
vsnr integer
);
END PROCEDURE; 

Создает процедуру 'table_create' с привилегиями администратора, которая создает при вызове новую таблицу в базе данных 'proc_test'.

REFERENCES { BYTE | TEXT }

    REFERENCES ...

    Пример :

    under contsruction ...

    Создает процедуру '...'.

DEFAULT { Wert | NULL }

    DEFAULT специфицирует значение, которое используется, если в вызове процедуры опущен параметр.

    Пример:

CREATE PROCEDURE square ( par INTEGER DEFAULT 0 )
RETURNING INTEGER;
DEFINE rez INTEGER;
LET rez = par * par;
RETURN rez;
END PROCEDURE;

Cоздает процедуру 'square', у которой единственный параметр 'par' не обязателен и по умолчанию равен нулю. Если эта процедура вызвана без параметров, то она возвращает 0*0 назад, иначе - par*par .

RETURNING { Feldtyp | REFERENCES { BYTE | TEXT } }

    RETURNING указывает на количество и тип значений, которые возвращает процедура.

    Пример:

CREATE PROCEDURE table_insert ( )
RETURNING INT;
DEFINE i INT;
INSERT INTO aam_proc_test ( fid, ag, vsnr )
VALUES ( 1, 2, 3 );
INSERT INTO aam_proc_test ( fid, ag, vsnr )
VALUES ( 0, 9, 9 );
LET i = SELECT COUNT(*) FROM proc_test;
RETURN i;
END PROCEDURE;

Здесь создается процедура 'table_insert', которая добавляет в таблицу 'proc_test' две новых строки данных и возвращает количество строк в этой таблице.

Statement

    Ein SPL-Statement bzw. Befehl, z.B. DEFINE, RETURN, IF, FOR, SET, LET FOREACH, WHILE, usw.

    Пример:

CREATE PROCEDURE table_run ( )
DEFINE i INT;
SET ISOLATION TO dirty read;
SET LOCK MODE to wait 60;
SET PDQPRIORITY 5;
CALL table_drop();
CALL table_create();
LET i = table_insert();
END PROCEDURE;

Создает процедуру 'table_run', которая вызывает некоторые другие процедуры и возвращает результат процедуры 'table_insert'.

Общий пример

    Пример:

CREATE PROCEDURE table_show ( )
RETURNING INT, INT, INT;
DEFINE my_fid, my_ag, my_vsnr INTEGER;
CALL table_run();
FOREACH
SELECT square(fid+1) fid, ag, vsnr
INTO my_fid, my_ag, my_vsnr
FROM proc_test
RETURN my_fid, my_ag, my_vsnr
WITH RESUME;
END FOREACH;
END PROCEDURE;

Создает процедуру 'table_show' , которая возвращает все строки таблицы proc_test, которые она до этого туда записала с помощью процедуры 'table_run'.