“Сохраненная функция в SQL*Plus”
Сохраненная функция в SQLPlus — это именованный блок PL/SQL, который можно хранить и выполнять в базе данных Oracle. Это фрагмент кода многократного использования, который выполняет определенную задачу и возвращает значение. Вот несколько методов создания и использования хранимых функций в SQLПлюс, а также примеры кода:
Метод 1: создание базовой хранимой функции
CREATE OR REPLACE FUNCTION get_employee_count
RETURN NUMBER
IS
emp_count NUMBER;
BEGIN
SELECT COUNT(*) INTO emp_count FROM employees;
RETURN emp_count;
END;
/
В этом примере создается хранимая функция get_employee_count для возврата общего количества сотрудников в таблице «employee».
Метод 2: использование параметров в хранимой функции
CREATE OR REPLACE FUNCTION get_employee_salary(emp_id IN NUMBER)
RETURN NUMBER
IS
salary NUMBER;
BEGIN
SELECT salary INTO salary FROM employees WHERE employee_id = emp_id;
RETURN salary;
END;
/
В этом примере хранимая функция get_employee_salary принимает идентификатор сотрудника в качестве параметра и возвращает зарплату этого сотрудника.
Метод 3: вызов хранимой функции в SQL*Plus
DECLARE
emp_count NUMBER;
BEGIN
emp_count := get_employee_count;
DBMS_OUTPUT.PUT_LINE('Total Employees: ' || emp_count);
END;
/
В этом примере сохраненная функция get_employee_count вызывается в анонимном блоке PL/SQL для получения общего количества сотрудников и отображения результата с помощью функции DBMS_OUTPUT.PUT_LINE.
Метод 4. Использование хранимой функции в SQL-запросе
SELECT employee_id, first_name, get_employee_salary(employee_id) AS salary
FROM employees;
В этом примере хранимая функция get_employee_salary используется в запросе SQL для получения зарплаты каждого сотрудника из таблицы «employees».
Метод 5. Изменение сохраненной функции
CREATE OR REPLACE FUNCTION increase_salary(emp_id IN NUMBER, increase_amount IN NUMBER)
RETURN NUMBER
IS
new_salary NUMBER;
BEGIN
SELECT salary + increase_amount INTO new_salary
FROM employees WHERE employee_id = emp_id;
UPDATE employees SET salary = new_salary WHERE employee_id = emp_id;
COMMIT;
RETURN new_salary;
END;
/
В этом примере создается хранимая функция «increase_salary» для увеличения зарплаты сотрудника на указанную сумму. Он также включает оператор UPDATE для изменения зарплаты в базе данных.