Для создания процедур и функций в PostgreSQL используется одна конструкция. В первом случае мы просто не указываем тип возвращаемого значения. Более того, это запрещено, если выходных параметров более одного. Если выходных аргументов нет, то в качестве возвращаемого типа надо указать void. Также нельзя задавать аргументам значение по умолчанию, но это компенсируется механизмом перегрузки.
-- создание процедурыCREATE OR REPLACE FUNCTION insert5(n INOUT integer) AS $$DECLARE o integer :=5; -- локальная переменнаяBEGIN delete from tblname where id < 6; insert into tblname values(1,o); insert into tblname values(2,o); insert into tblname values(3,o); insert into tblname values(4,o); insert into tblname values(5,o); commit; n:=5; END$$ LANGUAGE plpgsql; -- нет выходных аргументовCREATE OR REPLACE FUNCTION pdemo() returns voidAS $$DECLARE r integer; BEGIN r:=3;END$$ LANGUAGE plpgsql; -- уничтожение процедурыDROP FUNCTION insert5(n INOUT integer);
MySQL
Ниже приведен пример процедуры для MySQL.
-- создание процедурыDELIMITER $$ DROP PROCEDURE IF EXISTS insert5 $$CREATE PROCEDURE insert5 (INOUT n integer)BEGIN declare o integer default 1; set o:=n; delete from tblname where id < 6; insert into tblname values(1,o); insert into tblname values(2,o); insert into tblname values(3,o); insert into tblname values(4,o); insert into tblname values(5,o); commit; set n:=5;END $$ DELIMITER ; -- уничтожение процедурыDROP PROCEDURE insert5;