Oracle’da paket olarak adlandırılan nesneler, birbiriyle ilişkili fonksiyon
ve prosedürlerin bir isim altında gruplanmasıyla oluşturulur.
PL/SQL paketleri sayesinde daha modüler programlar geliştirilebilir.
Birden fazla uygulama tarafından kullanılan bir paket üzerinde değişiklik yapılarak,
tüm bu uygulamaların güncellenmesi sağlanabilir. Bir paket içerisindeki bir alt program
çağrıldığında, tüm paket belleğe alınır ve bu paketle ilişkili diğer alt programlar
bu sayede hızlı çalıştırılabilir.

———————————-
PACKAGE paket_ismi IS

[değişkenlerin tanımlanması]
[cursor tanımlanması]
[modullerin tanımlanması]

END paket_ismi;

———————————-
PACKAGE BODY paket_ismi IS

[değişkenlerin tanımlanması]
[select cümleciği ile cursor tanımlanması]

[modullerin içeriğinin tanımlanması]

[ BEGIN

dml işlemlerimiz]

[EXCEPTION

yakalanan hata tanımlamalarımız]

END paket_ismi;

————————-PAKET ÖRNEK-1—————–

create or replace package paket1 as
procedure pro1;
function fonk1 return varchar2;
end paket1;
/
—————————————-
create or replace package body paket1 as
procedure pro1 is
begin
dbms_output.put_line(‘merhaba prosedür!’);
end pro1;
function fonk1 return varchar2 is
begin
return (‘merhaba fonksiyon!’);
end fonk1;
end paket1;
/
—————————————-
set serveroutput on
exec paket1.pro1;

——————–
select paket1.fonk1 from dual;

——————–PAKET ÖRNEK-2—————–

CREATE OR REPLACE PACKAGE hasta_islem as

PROCEDURE hasta_kayit (hasta_id NUMBER, hasta_no NUMBER, hasta_adi VARCHAR2,klinik_id NUMBER);

PROCEDURE hasta_sil (hastaid NUMBER);

END hasta_islem;
/
—————————————————————-

CREATE OR REPLACE PACKAGE BODY hasta_islem as

PROCEDURE hasta_kayit (hasta_id NUMBER, hasta_no NUMBER, hasta_adi VARCHAR2,klinik_id NUMBER) IS

BEGIN

INSERT INTO hastalar2 VALUES (hasta_id, hasta_no, hasta_adi,klinik_id);

END hasta_kayit;

PROCEDURE hasta_sil (hastaid NUMBER) IS

BEGIN

DELETE FROM hastalar2 WHERE hasta_id = hastaid;

END hasta_sil;

END hasta_islem;
/

exec hasta_islem.hasta_kayit(85,787,’kemal’,3);
exec hasta_islem.hasta_sil(85);