Оператор EXECUTE PROCEDURE
Оператор
EXECUTE PROCEDURE имя [параметр (, параметр...]];
[RETURNING_VALUES параметр [, параметр...]];
Выполняет другую хранимую процедуру из тела данной хранимой процедуры. При этом после слова PROCEDURE перечисляются входные параметры, если они есть, а после RETURNING_VALUES перечисляются выходные параметры.
Пример
Перепишем приведенную выше процедуру POK_LIST таким образом, чтобы из ее тела вызывалась другая процедура, AVG_KOLVO, возвращающая среднее число отпуска конкретного товараCREATE PROCEDURE AVG_KOLVO (TVR VARCHAR(20)
RETURNS(OUT_AVG_KOLVO INTEGER)
AS
BEGIN
SELECT AVG(KOLVO) FROM RASHOD WHERE TOVAR = :TVR INTO :OUT_AVG_KOLVO;
SUSPEND;
END
CREATE PROCEDURE POK_LIST1 (IN_TOVAR VARCHAR(20))
RETURNS(РОК VARCHAR(20)) AS
DECLARE VARIABLE AVG_KOLVO INTEGER;
BEGIN
EXECUTE PROCEDURE AVG_KOLVO(:IN_TOVAR)
RETURNING_VALUES : AVG_KOLVO;
FOR SELECT POKUP FROM RASHOD WHERE KOLVO > : AVG_KOLVO INTO : РОК
DO
BEGIN
IF (:POK IS NULL) THEN РОК = "Покупатель не указан";
SUSPEND;
END
END