0% au considerat acest document util (0 voturi)
15 vizualizări13 pagini

PL-SQL - Note

PL/SQL este un limbaj de programare dezvoltat de Oracle Corporation ca o extensie procedurală a SQL-ului pentru utilizare în bazele de date Oracle. Caracteristicile cheie ale PL/SQL includ integrarea strânsă cu SQL, sprijin pentru structuri de programare precum funcții și proceduri, și programarea orientată pe obiect. PL/SQL oferă, de asemenea, avantaje precum performanță ridicată, câștiguri de productivitate și portabilitate pentru aplicații.

Încărcat de

ScribdTranslations
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
15 vizualizări13 pagini

PL-SQL - Note

PL/SQL este un limbaj de programare dezvoltat de Oracle Corporation ca o extensie procedurală a SQL-ului pentru utilizare în bazele de date Oracle. Caracteristicile cheie ale PL/SQL includ integrarea strânsă cu SQL, sprijin pentru structuri de programare precum funcții și proceduri, și programarea orientată pe obiect. PL/SQL oferă, de asemenea, avantaje precum performanță ridicată, câștiguri de productivitate și portabilitate pentru aplicații.

Încărcat de

ScribdTranslations
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

PL-SQL

Limbajul de programare PL/SQL a fost dezvoltat de Oracle Corporation la sfârș itul anilor 1980 ca procedural
extensie de limbaj pentru SQL ș i baza de date relaț ională Oracle. Iată câteva fapte notabile despre
PL/SQL:

PL/SQL este un limbaj complet portabil de procesare a tranzacț iilor, de înaltă performanț ă.

PL/SQL oferă un mediu de programare interpretat, încorporat ș i independent de sistemul de operare.

PL/SQL poate fi, de asemenea, apelat direct din interfaț a de linie de comandă SQL*Plus.

Apelul direct poate fi, de asemenea, realizat din apeluri ale unui limbaj de programare extern către baza de date.

Sintaxa generală a PL/SQL se bazează pe cea a limbajelor de programare ADA ș i Pascal.

Pe lângă Oracle, PL/SQL este disponibil în baza de date TimesTen în memorie ș i IBM DB2.

Funcț ii ale PL/SQL

PL/SQL are următoarele caracteristici:

PL/SQL este strâns integrat cu SQL.

Oferă o verificare extinsă a erorilor.

Oferă numeroase tipuri de date.

Oferă o varietate de structuri de programare.

Suportă programarea structurat prin funcț ii ș i proceduri.

Suportează programarea orientată pe obiect.

Sprijină dezvoltarea aplicaț iilor web ș i a paginilor de server.


Avantajele PL/SQL

PL/SQL are următoarele avantaje:

SQL este limbajul standard de baze de date, iar PL/SQL este puternic integrat cu SQL. PL/SQL
susț ine atât SQL static, cât ș i dinamic. SQL static susț ine operaț iunile DML ș i tranzacț iile
control din blocul PL/SQL. SQL dinamic este SQL care permite încorporarea afirmaț iilor DDL în PL/SQL
blocuri.

PL/SQL permite trimiterea unui întreg bloc de instrucț iuni către baza de date dintr-o dată. Acest lucru reduce
traficul de reț ea ș i oferă performanț e ridicate pentru aplicaț ii.

PL/SQL oferă o productivitate ridicată programatorilor, deoarece poate interoga, transforma ș i actualiza datele într-un
bază de date.

PL/SQL economiseș te timp în proiectare ș i depanare prin caracteristici puternice, cum ar fi gestionarea excepț iilor,
encapsulare, ascunderea datelor ș i tipuri de date orientate pe obiect.

Aplicaț iile scrise în PL/SQL sunt complet portabile.

PL/SQL oferă un nivel ridicat de securitate.

PL/SQL oferă acces la pachete SQL predefinite.

PL/SQL oferă suport pentru programarea orientată pe obiect.

PL/SQL oferă suport pentru dezvoltarea aplicaț iilor web ș i a paginilor de server.
STRUCTURA DE BAZĂ A PROGRAMULUI

PL/SQL este un limbaj structurat pe blocuri, ceea ce înseamnă că programele PL/SQL sunt împărțite și scrise în blocuri logice de
cod. Fiecare bloc constă în trei sub-părți:

S.N. Sec ț iuni ș i Descriere

Declaraț ii
1 Această secțiune începe cu cuvântul cheie DECLARE. Este o secțiune opțională și definește toate variabilele,
cursorii, subprogramele și alte elemente care vor fi folosite în program.

Comenzi Executabile
Această secțiune este închisă între cuvintele cheie ÎNCEPUT și SFÂRȘIT și este o secțiune obligatorie.
2 constă în instrucțiunile executabile PL/SQL ale programului. Ar trebui să aibă cel puțin una
linie de cod executabil, care poate fi doar o comandă NULL pentru a indica că nu ar trebui să existe nimic
executat.
Gestionarea Excepț iilor
3 Această secțiune începe cu cuvântul cheie EXCEPȚIE. Această secțiune este din nou opțională și conține
excepție(excepții) care gestionează erorile din program.

Fiecare instrucțiune PL/SQL se încheie cu un punct și virgulă (;). Modulele PL/SQL pot fi înglobate în alte module PL/SQL.
folosind ÎNCEPUT și SFÂRȘIT. Iată structura de bază a unui bloc PL/SQL:

DECLAR
<secț iunea declaraț iilor>
ÎNCEPUT
Comandă executabilă nevalidă.
EXCEPȚ IE
<gestionarea excepț iilor>
SFÂRȘ IT;

Delimitatoarele PL/SQL

Un delimitator este un simbol cu un înț eles special. Urmează lista delimitatoarelor în PL/SQL:

Delimitator Descriere

+, -, *, / Adunare, scădere/negare, înmulț ire, divizare

% Indicator de atribuț ie

' Delimitator de ș iruri de caractere


. Selector de componentă

(,) Delimiter de expresie sau listă

: Indicator de variabilă gazdă

, Separador de articole

" Delimitator pentru identificatori între ghilimele

= Operator relaț ional

@ Indicator de acces la distanț ă

; Terminarea declaraț iei

:= Operator de atribuire

=> Operator de asociere

|| Operator de concatenare

** Operatorul de exponenț iere

<<, >> Delimitator etichetă (început ș i sfârș it)

/*, */ Delimitator de comentarii pe mai multe linii (început ș i sfârș it)

-- Indicator de comentariu pe o singură linie

.. Operator de interval

<, >, <=, >= Operatori relaț ionali

<>, '=, ~=, ^= Versiuni diferite ale DIFERIT


Comentariile PL/SQL
Comentariile din program sunt declarații explicative pe care le poți include în codul PL/SQL pe care îl scrii și ajută
oricine citeste codul sursă. Toate limbajele de programare permit o formă de comentarii.

PL/SQL acceptă comentarii pe o singură linie și comentarii pe mai multe linii. Toate caracterele disponibile în orice comentariu sunt ignorate
de compilatorul PL/SQL. Comentariile pe o singură linie PL/SQL încep cu delimitatorul -- (două liniuțe) și comentariile multi-linie
comentariile sunt închise între /* și */.

DECLARE
-- declaraț ia variabilei
Salut, lume!
ÎNCEPE
/*
* Declara ț ie executabilă PL/SQL
*/
dbms_output.put_line(mesaj);
SFÂRȘ IT;

Tipuri de date scalare PL/SQL și subtipuri


Tipurile de date scalar PL/SQL și subtipurile se încadrează în următoarele categorii:

Tip de Dată Descriere

Numeric Valori numerice asupra cărora se efectuează operații aritmetice.

Caracter Valorile alfanumerice care reprezintă caractere unice sau șiruri de caractere.

Boolean Valorile logice pe care se efectuează operații logice.

Data și ora Date și ore.

PL/SQL oferă subtipuri ale tipurilor de date. De exemplu, tipul de date NUMBER are un subtip numit INTEGER. Tu
poți utiliza subtipuri în programul tău PL/SQL pentru a face tipurile de date compatibile cu tipurile de date din alte programe în timp ce
încapsularea codului PL/SQL într-un alt program, cum ar fi un program Java.

Tipuri de date numerice PL/SQL și subtipuri


Următoarele sunt detaliile tipurilor de date numerice predefinite PL/SQL și subtipurile acestora:

Tip de date Descriere

Întreg semnat în intervalul -2,147,483,648 până la 2,147,483,647, reprezentat în


PLS_INTEGER
32 de biți

ÎNTREGRĂ BINĂR Număr întreg semnat în intervalul -[Link] până la [Link], reprezentat în
32 de biți

FLOAT_BINAR Număr în virgulă mobilă de precizie simplă în format IEEE 754

BINARY_DOUBLE Număr în virgulă mobilă în format IEEE 754 cu precizie dublă

Număr cu virgulă fixă sau cu virgulă mobilă cu valoare absolută în intervalul 1E-130 până la
NUMĂR(precizie, scară)
(dar nu inclusiv) 1.0E126. O variabilă de tip NUMĂR poate reprezenta și 0.

DEC(prec, scală) Tip fix cu punct zecimal specific ANSI cu o precizie maximă de 38 de cifre zecimale.

DECIMAL(prec, scale) tip specific IBM cu punct fix cu o precizie maximă de 38 de cifre zecimale.

NUMERIC(pre, secale) Tip flotant cu o precizie maximă de 38 de cifre zecimale.

Tip de punct flotant specific ANSI cu precizie maximă de 126 de cifre binare
PRECIZIE DUBLĂ
(aproximativ 38 de cifre zecimale)

Tip de punct flotant specific ANSI și IBM cu o precizie maximă de 126


FLOAT
cifre binare (aproximativ 38 de cifre zecimale)

INT Tip de integer specific ANSI cu o precizie maximă de 38 de cifre zecimale

Tip de întreg specific ANSI și IBM cu o precizie maximă de 38 de zecimale


ÎNTREG
cifre

Tip de integer specific ANSI și IBM cu o precizie maximă de 38 de zecimale


MIC INT
cifre

Tip de număr în virgulă mobilă cu o precizie maximă de 63 de cifre binare (aproximativ


REAL
18 cifre zecimale

Tipuri de date de caracter PL/SQL și subtipuri


Următoarele sunt detaliile tipurilor de date caracter predefinite PL/SQL și subtipurile acestora:

Tip de Date Descriere

CARACTER Șir de caractere de lungime fixă cu dimensiunea maximă de 32.767 de bytes


VARCHAR2 Șir de caractere de lungime variabilă cu dimensiunea maximă de 32.767 de octeti

Șir binar sau șir de bytes de lungime variabilă cu o dimensiune maximă de 32.767 bytes, nu
CRESC
interpretat de PL/SQL

NCHAR Șir de caractere naționale cu lungime fixă și dimensiune maximă de 32.767 de octeți

NVARCHAR2 Șir de caractere naționale de lungime variabilă cu dimensiunea maximă de 32.767 de octeți

LUNG Șir de caractere de lungime variabilă cu dimensiunea maximă de 32.760 de biți

Șir binar sau de bytes de lungime variabilă cu o dimensiune maximă de 32,760 de bytes, nu
LUNG CRUD
interpretat de PL/SQL

ROWID Identificator fizic de rând, adresa unui rând într-un tabel obișnuit

UROWID Identificator universal de rând (fizic, logic sau identificator de rând străin)

Tipuri de date Boolean PL/SQL


Tipul de date BOOLEAN stochează valori logice care sunt utilizate în operații logice. Valorile logice sunt valorile Booleene.
valorile ADEVĂRAT și FALS și valoarea NULL.

Cu toate acestea, SQL nu are un tip de date echivalent cu BOOLEAN. Prin urmare, valorile booleene nu pot fi folosite în:

Declarații SQL

Funcții SQL încorporate (cum ar fi TO_CHAR)

Funcții PL/SQL invocate din instrucțiuni SQL

Tipuri de Datetime și Interval PL/SQL


Tipul de dată DATE pentru a stoca date și ore de lungime fixă, care includ timpul zilei în secunde de la miezul nopții. Valid
datele variază de la 1 ianuarie 4712 î.Hr. la 31 decembrie 9999 [Link].

Formatul de dată implicit este setat de parametrul de inițializare Oracle NLS_DATE_FORMAT. De exemplu, formatul implicit
s-ar putea să fie 'ZZ-LUNA-YY', care include un număr de două cifre pentru ziua lunii, o abreviere a lunii
nume, și ultimele două cifre ale anului, de exemplu, 01-OCT-12.

Fiecare DATĂ include secolul, anul, luna, ziua, ora, minutul și secunda. Tabelul următor arată valorile valide.
valori pentru fiecare câmp:

Numele câmpului Valori valide pentru data ș i ora

-4712 la 9999
AN Orice întreg nenul
(excludând anul 0)
LUNĂ 01 până la 12 0 la 11

01 până la 31 (limitat de
valorile LUNII și
ZI AN, conform oricărui număr întreg diferit de zero
regulile calendarului
pentru localizare)

ORĂ 00 la 23 0 până la 23

MINUT 00 până la 59 0 până la 59

00 la 59.9(n), unde
0 până la 59,9(n), unde 9(n) este precizia intervalului
AL DOILEA 9(n) este precizia lui
secunde fracționale
timp fracțiuni de secundă

-12 la 14 (interval
ORA_FUZIONALĂ acomodează lumina naturală Nu se aplică
schimbările orarului de vară

00 până la 59 Nu se aplică

Găsit în dinamică
vizualizarea performanței REGION_FUS_DE_TIMP Nu se aplică
V$TIMEZONE_NAMES

Găsit în dinamică
ABREVIARE_TEMPO vizualizare a performanței Nu se aplică
V$TIMEZONE_NAMES

Tipuri de date Large Object (LOB) în PL/SQL


Tipurile de date mari (LOB) se referă la elemente de date mari, cum ar fi text, imagini grafice, clipuri video și sunet.
forme de undă. Tipurile de date LOB permit accesul eficient, aleatoriu și pe bucăți la aceste date. Următoarele sunt definite în prealabil
Tipuri de date LOB PL/SQL:

Tip de date Descriere Mărime

Utilizat pentru a stoca binare mari


BFILE obiecte în sistemul de operare Dependent de sistem. Nu poate depăși 4 gigabytes (GB).
fișiere în afara bazei de date.

Utilizat pentru a stoca fișiere binare mari


BLOB 8 până la 128 terabytes (TB)
obiecte în baza de date.
Utilizat pentru a stoca blocuri mari de
CLOB datele caracterului în 8 la 128 TB
bază de date.

Folosit pentru a stoca blocuri mari de


NCLOB Date NCHAR în 8 până la 128 TB
bază de date.

NULL-uri în PL/SQL
Valorile NULL în PL/SQL reprezintă date lipsă sau necunoscute și nu sunt un întreg, un caracter sau orice altceva.
tip de date specific. Rețineți că NULL nu este același lucru cu un șir de date gol sau cu valoarea caracterului nul ''. Un null poate
a fi atribuit, dar nu poate fi egalat cu nimic, inclusiv cu sine însuși.

Exemplul 'Salut Lume' :

DECLARĂ
Bună, lume!
ÎNCEPE
dbms_output.put_line(mesaj);
SFÂRȘ IT;
/

SAU

Dbms_output.put_line('salut lume');

NOTĂ :-- Pentru a afiș a mesajul de ieș ire, SERVEROUTPUT trebuie să fie activat.

Sintaxă :

SET SERVEROUTPUT ON;

Întrebare: Scrieț i un program pentru a aduna 2 numere.

Declară

Un număr (2);

B număr(2);

C număr(2);
Începe

A := 10;

B:= 20;

C := A + B;

Dbms_output.put_line('suma lui '|| A || ' ș i ' || B || ' este ' || C);

Sfârș it;

Q: Scrieț i un program pentru a aduna 2 numere date de utilizator.

Declară

Un număr(2);

B număr(2);

C număr(2);

Începe

A := &A;

B:= &B;

C := A + B;

Dbms_output.put_line('suma lui '|| A || ' ș i ' || B || ' este ' || C);

Sfârș it;

Cod WAP pentru a calcula suma totală (TA+DA) a unui angajat (EID= 20), de asemenea, actualizează suma în tabel.

Emp (EID, Ename, TA,DA,total )

Declaraț i

un număr (10);
b număr (10);
c număr(10);
Începe
Select TA, DA în a, b din Emp unde EID = 20;
C := a+b;
Actualizează Emp set total = c unde EID = 20;
Sfârș it;

%TIP
Pentru a obț ine acelaș i tip de date pentru o variabilă declarată ca cel din baza de date.

Sintaxă :

V_name [Link]%TIP,

Exemplu :

Declară
A [Link]%tip;

DECLARAȚII CONDITIONALI

DACA – ATUNCI
DACĂ–ATUNCI–ALTFEL
DACĂ-ATUNCI-ALTFEL

WAP pentru a găsi cel mai mare număr

Declara
Un număr(2);
Numărul B (2);
Începe
A := &A;
B := &B;

Dacă A > B ATUNCI

DBMS_OUTPUT.PUT_LINE('A ESTE MAI MARE');

ALTFEL

DBMS_OUTPUT.PUT_LINE('B ESTE MAI MARE');


SFÂRȘ IT IF;
SFÂRȘ IT;

WAP PENTRU A VERIFICA DACĂ ESTE PAR SAU IMPAR

Declară
Un număr (2);
Începe
A = &A;
Dacă A mod 2 = 0 atunci
Dbms_output.put_line('par');
Altfel
Dbms_output.put_line('impar');
Sfârș it dacă;

Sfârș it;

CICLE
BUCLOP
BUCLO-WHILE
BUCLOOP

WAP afiș aț i primele 10 numere naturale.

Declară
număr(2);

începe

i := 1;

BUCLE
Dbms_output.put_line(i);
i:=i+1;
Ieș i când i > 10;
SFÂRȘ IT LOOP;
SFÂRȘ IT;

Q–wap pentru a imprima pătratul numerelor de la 1 la 10;


Q–WAP pentru a găsi suma primelor 10 numere
Q–WAP pentru a imprima tabla de 2.
Q–WAP pentru a găsi factorialul

Bucla FOR

Declară
Un număr (4);
i număr(4);
începe
pentru i în 1..10
ciclul
A:=2*i;
Dbms_output.put_line(' 2 * ' || i || ' = ' || A );

Sfârș it buclă;

Sfârș it;

Pentru invers

pentru i în ordine inversă 1..10


BUCLA WHILE :

DECLARĂ

un număr(2) := 10;

ÎNCEPE

ÎN TIMP CE a < 20 CICLU

dbms_output.put_line('valoarea lui a: ' || a);

a := a + 1;

FINALIZAȚI CICLUL;

SFÂRȘ IT;

S-ar putea să vă placă și