PL/SQL Programlama — 7 — Packages (Paketler)
Bu bölümde, paketler konusunu inceleyeceğiz. Paketler, mantıksal olarak ilişkili PL/SQL tipleri, alt programları gruplayan şema nesneleridir. Paketler bize modüllerlik, kolay uygulama dizaynı, iyi performans avantajı sağlar. Paketler 2 kısımdan oluşur:
- Body (Gövde)
- Specification (Belirtme-Tanımlama)
Gövde bölümünde imleç ve alt programlar tanımlanır. Spec bölümündeyse, değişkenler, sabitler, aykırı durumlar, imleçler ve alt programlar için kulanılabilir. Sistemde bulunan paketlere örnek olarak DBMS_OUTPUT paketi verilebilir.
Paket Tanımlamak
Paket oluşturmak için CREATE PACKAGE deyimini kullanırız. Söz dizimi aşağıdaki gibidir:
CREATE [OR REPLACE] PACKAGE package_name
{IS | AS}
package_specification
END package_name;
package specification kısmında; prosedürler, fonksiyonlar, tipler, nesneler kullanılır. Belirtiğimiz sentaks ile ilgili örneğimiz :
CREATE OR REPLACE PACKAGE personel AS
-- calisanin tam adi
FUNCTION get_fullname(n_emp_id NUMBER)
RETURN VARCHAR2;
-- calisanin maasi
FUNCTION get_salary(n_emp_id NUMBER)
RETURN NUMBER;
END personel;
Bu örnek, Specification kısıma örnektir. Body için aşağıdaki örneği inceleyiniz:
CREATE PACKAGE BODY product_package AS
FUNCTION get_products_ref_cursor
RETURN t_ref_cursor IS
v_products_ref_cursor t_ref_cursor;
BEGIN
OPEN v_products_ref_cursor FOR
SELECT product_id, name, price
FROM products;
RETURN v_products_ref_cursor;
END get_products_ref_cursor;
PROCEDURE update_product_price (
p_product_id IN products.product_id%TYPE,
p_factor IN NUMBER
) AS
v_product_count INTEGER;
BEGIN
SELECT COUNT(*)
INTO v_product_count
FROM products
WHERE product_id = p_product_id;IF v_product_count = 1 THEN
UPDATE products
SET price = price * p_factor
WHERE product_id = p_product_id;
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
END update_product_price;
END product_package;
/Paketi Çalıştırmak:
Fonksiyon ve prosedürlerde olduğu paketleri çalıştırmak/çağırmak aynıdır.SELECT personel.get_fullname
FROM dual;Burada paketin adı yazılır ardından . (nokta) koyulduktan sonra paket içinde kullanmak istediğiniz fonksiyon çağırılarak çalıştırılır.
Paketi Silmek:
Sistemdeki bir paketi silmek istersek DROP PACKAGE deyimi kullanılır. Söz dizimi aşağıdaki gibidir:DROP PACKAGE paketadiKısaca paketler bu şekilde...