Oracle/PLSQL: Создание функций

В Oracle, вы можете создавать ваши собственные функции.

Синтаксис создания (обновления) функции:

CREATE [OR REPLACE] FUNCTION function_name
   [ (parameter [,parameter]) ]
   RETURN return_datatype
IS | AS
   [declaration_section]
BEGIN
   executable_section
[EXCEPTION
   exception_section]
END [function_name];

При создании функции или процедуры, вы можете определять ее параметры. Существует три типа параметров, которые вы можете определить:

  1. IN – На этот параметр можно ссылаться внутри процедуры или функции. Значение параметра не может быть изменено процедурой или функцией.
  2. OUT – На параметр нельзя сослаться внутри процедуры или функции, но значение параметра может быть изменено процедурой или функцией.
  3. IN OUT – На параметр можно сослаться внутри процедуры или функции и его значение может быть изменено процедурой или функцией.

Простой пример создания (обновлении) функции:

CREATE OR REPLACE FUNCTION FindCourse(name_in IN VARCHAR2) RETURN NUMBER IS
   cnumber NUMBER;
 
   CURSOR c1 IS
      SELECT course_number FROM courses_tbl WHERE course_name = name_in;
 
BEGIN
   OPEN c1;
   FETCH c1
      INTO cnumber;
 
   IF c1%notfound THEN
      cnumber := 9999;
   END IF;
 
   CLOSE c1;
   RETURN cnumber;
 
EXCEPTION
   WHEN OTHERS THEN
      raise_application_error(-20001,'An error was encountered - ' || SQLCODE || ' -ERROR- ' || SQLERRM);
END;

Эта функция называется FindCourse. Она имеет один входной параметр name_in и возвращает число. Функция может вернуть количество курсов если найдет их по имени курса. В противном случае она вернет 99999.
Вы можете сослаться на вашу функцию из SQL выражения следующим образом:

SELECT course_name, FindCourse(course_name) AS course_id
  FROM courses
 WHERE subject = 'Mathematics';

Оставить комментарий