Пакеты с переменными, процедурами и функциями в PL/SQL

минута на чтение

Пакеты 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!
Facebook Vk Ok LinkedIn Telegram Whatsapp

Похожие записи:

Как я писал в прошлом посте (Различия между T-SQL и PL/SQL), в прошлом семестре я проходил курс по хранилищам данных. Изначально я собирался написать больше постов, но времени не было. В черновике уже долгое время лежит несколько постов, но когда я их доделаю ...
Прошлым летом я допинал бакалавра в Бизнес-информатике и в октябре начал магистратуру. На работе я использую систему управления базами данных от Oracle, на курсе Data Warehouse (хранилище данных) сейчас я работаю с SQL Server. В этом посту я опишу несколько ра...
С начала лета я вплотную работаю с технологиями Oracle, как можно понять и по другим постам, в частности с процедурным расширением языка cтруктурированных запросов PL/SQL. Я решил написать пару записей на эту тему и начинаю с циклов. Сначала рассмотрим просте...