Пакеты PL/SQL являются объектами базы данных (схемы), которые объединяют в себе связанные по смыслу подпрограммы (переменные, курсоры…). В этом посту рассмотрим простейший пример объявления пакета, его реализации и использования.
Состоят пакеты из спецификации и тела (body). Спецификация состоит из объявления субпрограмм, это что-то типа хедера в C. В коде ниже мы создаём спецификацию пакета cpa_master, которая содержит переменную, две процедуры и одну функцию. Переменная содержит адрес блога CPA-мастер. Первая процедура ровно как и функция не требуют никаких параметров, второй процедуре передаются два числа. Дополнительно функция возвращает строку.
create or replace package cpa_master as v_url varchar2(50) := 'http://cpa-master.com/'; procedure hello_world; procedure print_sum(x number, y number); function get_url return varchar2; end cpa_master;
Тело пакета содержит имплементацию процедур и функции.
create or replace package body cpa_master as procedure hello_world as begin dbms_output.put_line('Hello world!'); end hello_world; procedure print_sum(x number, y number) as result number; begin result := x + y; dbms_output.put_line('result: ' || result); end print_sum; function get_url return varchar2 as begin return v_url; end get_url; end cpa_master;
В коде ниже мы вызываем функции и процедуры пакета в PL/SQL.
cpa_master.hello_world(); cpa_master.print_sum(5, 2); dbms_output.put_line(cpa_master.get_url() );
Функцию можно также использовать в SQL-запросе.
select cpa_master.get_url() as url from dual;Понравился пост? Поделись в соцсетях и подписывайся на аккаунты в Twitter и Facebook!