Сохраненная функция в SQL*Plus: методы и примеры кода

“Сохраненная функция в 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 для изменения зарплаты в базе данных.