Описание.
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 | Входные параметры. Должны быть константами. |