Oracle

Oracle PL/SQL Package

Oracle Pl/SQL Package necə yaradılır və istifadə olunur

Oracle-da package-lər funksiya, prosedur və tipləri məntiqi olaraq birləşdirən objectlərdir.
Package-lər modulluq, funksionallıq və sürətli olması əsas üstünlükləridir.
Package-lər iki hissədən ibarət olur.
Specification və Body hissələri.
Specification hissəsində package-də olan function və procedure-ların tanımlanması edilir.
Body hissəsində isə spec-də qeyd elədiyimiz function və procedure-ların özləri yazılır.

İndi isə sadə bir nümunəyə baxaq. 4 function və bir procedure-dan ibarət package yaradaq.

ilk öncə package-in spec hissəsini yazaq.

    CREATE OR REPLACE PACKAGE si_math_operators  
    AS  
      FUNCTION si_addition (si_num1 NUMBER, si_num2 NUMBER)  
          RETURN NUMBER;  
      
      FUNCTION si_subtraction (si_num1 NUMBER, si_num2 NUMBER)  
          RETURN NUMBER;  
      
      FUNCTION si_multiplication (si_num1 NUMBER, si_num2 NUMBER)  
          RETURN NUMBER;  
      
      FUNCTION si_division (si_num1 NUMBER, si_num2 NUMBER)  
          RETURN NUMBER;  
      
      PROCEDURE si_do_operation (si_num1 NUMBER, si_num2 NUMBER, si_opr CHAR);  
    END si_math_operators;  

Ardınca isə body hissəsini yazaq.

    CREATE OR REPLACE PACKAGE BODY si_math_operators  
    AS  
      FUNCTION si_addition (si_num1 NUMBER, si_num2 NUMBER)  
          RETURN NUMBER  
      IS  
          si_rslt  NUMBER;  
      BEGIN  
          si_rslt := si_num1 + si_num2;  
          RETURN si_rslt;  
      END;  
      
      FUNCTION si_subtraction (si_num1 NUMBER, si_num2 NUMBER)  
          RETURN NUMBER  
      IS  
          si_rslt  NUMBER;  
      BEGIN  
          si_rslt := si_num1 - si_num2;  
          RETURN si_rslt;  
      END;  
      
      FUNCTION si_division (si_num1 NUMBER, si_num2 NUMBER)  
          RETURN NUMBER  
      IS  
          si_rslt  NUMBER;  
      BEGIN  
          si_rslt := si_num1 / si_num2;  
      EXCEPTION  
          WHEN ZERO_DIVIDE  
          THEN  
            BEGIN  
                si_rslt := -99999;  
            END;  
      
            RETURN si_rslt;  
      END;  
      
      FUNCTION si_multiplication (si_num1 NUMBER, si_num2 NUMBER)  
          RETURN NUMBER  
      IS  
          si_rslt  NUMBER;  
      BEGIN  
          si_rslt := si_num1 * si_num2;  
          RETURN si_rslt;  
      END;  
      
      PROCEDURE si_do_operation (si_num1 NUMBER, si_num2 NUMBER, si_opr CHAR)  
      IS  
          si_final_rslt  NUMBER;  
      BEGIN  
          CASE si_opr  
            WHEN '+'  
            THEN  
                si_final_rslt := si_addition (si_num1, si_num2);  
            WHEN '-'  
            THEN  
                si_final_rslt := si_subtraction (si_num1, si_num2);  
            WHEN '/'  
            THEN  
                si_final_rslt := si_division (si_num1, si_num2);  
            WHEN '*'  
            THEN  
                si_final_rslt := si_multiplication (si_num1, si_num2);  
            ELSE  
                DBMS_OUTPUT.put_line ('Other Operation Not Accepted.');  
          END CASE;  
      
          DBMS_OUTPUT.put_line (  
            si_num1 || si_opr || si_num2 || '=' || si_final_rslt);  
      END;  
    END si_math_operators;  
    /  

Package içərisindəki procedure və funksiyalara aşağıdakı şəkildə müraciət edirik.
BEGIN
SI_MATH_OPERATORS.SI_DO_OPERATION (5, 3, ‘*’);
END;
package_sevdimali

Həmçinin Oxu:  SQL ilə təkrar sətirləri silmək

Bir cavab yazın

Sizin e-poçt ünvanınız dərc edilməyəcəkdir. Gərəkli sahələr * ilə işarələnmişdir