PL /SQL Packages

PL /SQL-pakker er skjemaobjekter at grupper logisk relatert PL /SQL-typer, variabler og underprogrammer

En pakke vil ha to obligatoriske deler.

  • Pakken spesifikasjon

    pakke kroppen eller definisjon

    pakke Spesifikasjon

    Spesifikasjonen er grensesnittet til pakken. Det ERKLÆRER bare hvilke typer, variabler, konstanter, unntak, pekere, og underprogrammer som kan refereres fra utenfor pakken. Med andre ord, den inneholder all informasjon om innholdet i pakken, men utelukker koden for underprogrammene.

    Alle gjenstander plassert i spesifikasjonen kalles offentlig
    stedene. Enhver subprogram ikke i pakken spesifikasjonen, men som er kodet i pakken kroppen kalles a privat
    objekt.

    Følgende kodebiten viser en pakke spesifikasjonen har en enkelt prosedyre. Du kan ha mange globale variabler definert og flere prosedyrer eller funksjoner inne i en pakke
    CREATE PAKKE cust_sal AS PROSEDYRE find_sal (c_id customers.id% type);. END cust_sal; /

    Når ovenfor koden kjøres på SQL teksten produserer det følgende resultat:
    Package opprettet
    Pakke Body

    Pakken kroppen har kodene for ulike metoder deklarert i pakken spesifikasjon og andre private erklæringer, som er skjult fra kode utenfor. pakke.

    CREATE PAKKE BODY erklæringen er brukt for å lage pakken kroppen. Følgende kodebiten viser pakke kroppen erklæringen for cust_sal
    pakken opprettet ovenfor. Jeg antok at vi allerede har kunder tabell som er opprettet i vår database som nevnt i PL /SQL - Variabler kapittel
    CREATE OR REPLACE PAKKE BODY cust_sal AS PROSEDYRE find_sal (c_id customers.id% TYPE) ER c_sal customers.salary% TYPE.; BEGIN SELECT lønn INTO c_sal fra kunder hvor id = c_id; dbms_output.put_line ('Lønn:' || c_sal); END find_sal; END cust_sal; /

    Når ovenfor koden kjøres på SQL teksten, gir det følgende resultat:
    Package kroppen skapt
    Bruke Package Elements

    Pakken elementer (. variabler, er rutiner eller funksjoner) nås med følgende syntaks:
    package_name.element_name;

    Tenk, vi allerede har skapt over pakken i vår database schema, bruker følgende program find_sal
    metode cust_sal
    pakken:
    ERKLÆRER kode customers.id% Type: = & cc_id; BEGIN cust_sal.find_sal (kode), END; /

    Når ovenfor koden kjøres på SQL teksten det bedt om å oppgi kunde-ID, og ​​når du skriver inn en ID, viser den tilsvarende lønn som følger:
    Oppgi verdien for cc_id: 1Salary. 3000PL /SQL-prosedyren ble fullført
    Eksempel:

    Følgende Programmet gir en mer komplett pakke. Vi vil bruke KUNDER tabell lagret i vår database med følgende poster:
    Velg * fra kunder; + ---- + ---------- + ----- + ---- ------- + ---------- + | ID | NAME | AGE | ADRESSE | LØNN | + ---- + ---------- + ----- + ----------- + ---------- + | 1 | Ramesh | 32 | Ahmedabad | 3000.00 || 2 | Khilan | 25 | Delhi | 3000.00 || 3 | Kaushik | 23 | Kota | 3000.00 || 4 | Chaitali | 25 | Mumbai | 7500.00 || 5 | Hardik | 27 | Bhopal | 9500.00 || 6 | Komal | 22 | MP | 5500.00 | + ---- + ---------- + ----- + ----------- + ---------- +
    PAKKEN SPESIFIKASJON:
    CREATE OR REPLACE PAKKE c_package AS - Legger til en kunde PROSEDYRE addCustomer (c_id customers.id% type, c_name customers.name% type, c_age customers.age% type, c_addr customers.address% type, c_sal customers.salary% type); - Fjerner en kunde PROSEDYRE delCustomer (c_id customers.id% TYPE); --Lists Alle kunder PROSEDYRE listCustomer; . END c_package; /

    Når ovenfor koden kjøres på SQL teksten, skaper det ovennevnte pakke og viser følgende resultat:
    Package opprettet
    LAGE PAKKEN KROPP:
    CREATE OR REPLACE PAKKE BODY c_package AS PROSEDYRE addCustomer (c_id customers.id% type, c_name customers.name% type, c_age customers.age% type, c_addr customers.address% type, c_sal customers.salary% type) IS BEGIN INSERT INTO kunder (id, navn, alder, adresse, lønn) VALUES (c_id, c_name, c_age, c_addr, c_sal); END addCustomer; PROSEDYRE delCustomer (c_id customers.id% type) IS BEGIN DELETE FROM kunder WHERE id = c_id; END delCustomer; PROSEDYRE listCustomer er markør c_customers er SELECT navn FROM kunder; TYPE c_list er FORTEGN customers.name% type; NAME_LIST c_list: = c_list (); teller heltall: = 0; BEGIN for N i c_customers LOOP teller: = teller 1; name_list.extend; NAME_LIST (counter): = n.name; dbms_output.put_line ('Customer (' || teller || ')' || NAME_LIST (counter)); END LOOP; END listCustomer; END c_package; /

    Over eksempel gjør bruk av nestet tabell
    som vi vil diskutere i neste kapittel. Når ovennevnte koden kjøres på SQL teksten, gir det følgende resultat:
    Package kroppen skapt
    BRUKE PAKKE:.

    Følgende program bruker metodene erklært og definert i pakken c_package
    ERKLÆRER kode customers.id% Type: = 8; BEGIN c_package.addcustomer (7 'Rajnish', 25 'Chennai', 3500); c_package.addcustomer (8, 'Subham', 32 'Delhi', 7500); c_package.listcustomer; c_package.delcustomer (kode); c_package.listcustomer; END; /

    Når ovenfor koden kjøres på SQL teksten, gir det følgende resultat:
    Customer (1): Ramesh Kunde (2): Khilan Customer (3): Kaushik Customer (4 ): Chaitali Customer (5): Hardik Customer (6): KomalCustomer (7): RajnishCustomer (8): SubhamCustomer (1): Ramesh Kunde (2): Khilan Customer (3): Kaushik Customer (4): Chaitali Customer ( 5): Hardik Customer (6): KomalCustomer (7): RajnishPL /SQL-prosedyren ble fullført