double arrow

Синтаксис.. Следующая процедура SUB_TOT_BUGET берет номер отдела в качестве входного параметра и возвращает сумму бюджетов

Описание.

EXECUTE PROCEDURE

Примеры

Следующая процедура SUB_TOT_BUGET берет номер отдела в качестве входного параметра и возвращает сумму бюджетов, средний, минимальный и максимальный бюджет департаментов с определенным HEAD_DEPT:

/* Compute total, average, smallest, and largest department budget.

*Parameters:

* department id

*

*Returns:

* total budget

* average budget

* min budget

* max budget

*/

SET TERM !! ;

CREATE PROCEDURE sub_tot_budget (head_dept CHAR(3))

RETURNS (tot_budget DECIMAL(12, 2), avg_budget DECIMAL(12, 2),

min_budget DECIMAL(12, 2), max_budget DECIMAL(12, 2))

AS

BEGIN

SELECT SUM(budget), AVG(budget), MIN(budget), MAX(budget)

FROM department

WHERE head_dept = :head_dept

INTO :tot_budget, :avg_budget, :min_budget, :max_budget;

EXIT;

END !!

SET TERM ; !!

Следующая процедура ORG_CHART выводит диаграмму организации:

/*Display an org-chart.

*

* Parameters:

* --

* Returns:

* parent department

* department name

* department manager

* manager's job title

* number of employees in the department

*/

CREATE PROCEDURE org_chart

RETURNS (head_dept CHAR(25), department CHAR(25),

mngr_name CHAR(20), title CHAR(5), emp_cnt INTEGER)

AS

DECLARE VARIABLE mngr_no INTEGER;

DECLARE VARIABLE dno CHAR(3);

BEGIN

FOR SELECT h.department, d.department, d.mngr_no, d.dept_no

FROM department d

LEFT OUTER JOIN department h ON d.head_dept = h.dept_no

ORDER BY d.dept_no

INTO :head_dept, :department, :mngr_no, :dno

DO

BEGIN

IF (:mngr_no IS NULL) THEN

BEGIN

mngr_name = "--TBH--";

title = "";

END

ELSE

SELECT full_name, job_code

FROM employee

WHERE emp_no = :mngr_no

INTO :mngr_name, :title;

SELECT COUNT(emp_no)

FROM employee

WHERE dept_no = :dno

INTO :emp_cnt;

SUSPEND;

END

END !!

Когда ORG_CHART вызвана, например, следующей инструкцией:

SELCT * FROM ORG_CHART

Она выведет для каждого отдела: название отдела, отдел которому подчинен, имя начальника отдела и его должность, и количество служащих в отделе.

ORG_CHART должна быть использована как процедура выбора для вывода информации о всей организации. Если будет вызвана с помощью инструкции EXECUTE PROCEDURE, то в первый раз, когда процедура сталкивается с инструкцией SUSPEND, она завершается, возвращая информацию только о Штаб-квартире Корпорации.

EXECUTE PROCEDURE вызывает определенную сохраненную процедуру. Если процедура требует входных параметров, они передаются как константы.

ISQL автоматически выводит возвращаемые значения.

EXECUTE PROCEDURE name [param [, param ...]];

Аргумент Описание
name Имя существующей сохраненной процедуры в базе данных.
param Входные параметры. Должны быть константами.

Сейчас читают про: