Procedural Language/Structured Query Language (PL/SQL) este extensia procedurala a limbajului SQL.
PL/SQL este un limbaj de programare sofisticat care asigură accesarea datelor unei baze de date relaţionale orientate obiect şi permite gruparea unei mulţimi de comenzi într-un bloc unic de tratare a datelor. Programul este format din unul sau mai multe blocuri care pot conţine blocuri încuibărite.
PL/SQL include atât instrucţiuni SQL pentru manipularea datelor şi pentru gestiunea tranzacţiilor, cât şi instrucţiuni proprii. Limbajul combină construcţiile procedurale ale unui limbaj LG3 cu puterea şi flexibilitatea lui SQL (LG4).
Combinaţia a generat un limbaj puternic pentru modelarea aplicaţiilor complexe.
PL/SQL extinde SQL prin construcţii specifice limbajelor procedurale (definirea variabilelor, declararea tipurilor, utilizarea structurilor de control, implementarea procedurilor şi funcţiilor, introducerea tipurilor obiect şi metodelor
etc.). PL/SQL oferă posibilităţi moderne de tratare a informaţiei: încapsularea datelor, analiza specială a erorilor, mascarea informaţiei, orientarea obiect. Posibilităţile lui SQL sunt folosite pentru un acces rafinat la date, iar facilităţile oferite de PL/SQL sunt folosite pentru fluxul controlului procesării datelor.
Dintre funcţionalităţile limbajului PL/SQL care determină ca acesta să fie frecvent utilizat se remarcă următoarele facilităţi:
-
-
- integrarea comenzilor SQL de bază;
- integrarea cu server-ul Oracle şi cu utilitare Oracle;
- oferirea unui suport pentru programarea orientată obiect;
- asigurarea securităţii informaţiei;
- definirea şi gestiunea blocurilor de instrucţiuni;
- gestiunea variabilelor, constantelor şi a cursoarelor;
- modularizarea programelor (subprograme, pachete);
- implementarea şi utilizarea declanşatorilor;
- utilizarea structurilor de control fundamentale;
- detectarea şi gestiunea erorilor de execuţie şi a situaţiilor excepţionale;
- dezvoltarea de aplicaţii Web
-
PL/SQL este o tehnologie utilizată de server-ul Oracle şi de anumite utilitare Oracle. Blocurile PL/SQL sunt transmise unui motor PL/SQL şi procesate (compilate şi executate) de acesta. Motorul PL/SQL poate să se afle pe server-ul Oracle sau într-un utilitar, iar utilizarea sa depinde de unde se invocă PL/SQL. Multe utilitare Oracle (inclusiv Developer/2000) au propriul lor motor PL/SQL care este independent de motorul prezent pe server-ul Oracle.
Blocurile PL/SQL pot fi executate pe staţia client fără interacţiune cu server-ul sau în întregime pe server. Când blocurile PL/SQL sunt referite dintr-un program PRO*, din iSQL*Plus, sau de către Server Manager, motorul PL/SQL de pe server-ul Oracle va procesa aceste blocuri. Acesta descompune blocul în instrucţiuni SQL şi le trimite executorului de instrucţiuni SQL (SQL Statement Executor) de pe server-ul Oracle. Fără PL/SQL, instrucţiunile SQL ar fi procesate separat, fiecare la un moment dat, fiecare implicând un apel la server-ul Oracle.
Restul comenzilor (procedurale) sunt procesate de către executorul instrucţiunilor procedurale (PSE – Procedural Statement Executor) care este în motorul PL/SQL. PSE poate procesa datele care sunt locale aplicaţiei, reducându-se astfel activitatea de transfer spre server-ul Oracle şi numărul de cursoare solicitate. În felul acesta, este necesar un singur transfer pentru a trimite blocul din aplicaţie către server.
O aplicaţie bază de date poate fi structurată în trei părţi:
- interfaţa utilizator (utilizatorul introduce anumite informaţii şi obţine nişte rezultate în urma executării aplicaţiei);
- aplicaţia logică efectivă;
- baza de date.
Există două modele pentru proiectarea unei aplicaţii bază de date:
- modelul client-server (two-tier);
- modelul three-tier.
Multe dintre aplicaţiile baze de date sunt construite folosind modelul clasic client-server, descris succint anterior pentru PL/SQL. Modelul este caracterizat de cele două componente: client şi server. Client-ul mânuieşte interfaţa, iar server-ul conţine baza de date. Aplicaţia logică este scindată între client şi server. De remarcat această caracteristică fundamentală a modelului că aplicaţia comunică direct cu server-ul. Există un motor PL/SQL pe server, iar în anumite cazuri şi pe client.
Dacă motorul PL/SQL este pe server, atunci aplicaţia (care poate fi scrisă în Pro*C, JDBC, OCI sau alte limbaje) care rezidă pe client trimite cereri la un server de date. Cererile sunt rezolvate utilizând SQL. Diferite cereri SQL pot fi grupate
într-un bloc PL/SQL şi trimise ca o singură entitate server-ului.
Vom considera un scenariu în care există două motoare PL/SQL, unul pe staţia client (local) şi un motor PL/SQL pe server. De exemplu, un declanşator ce se execută pe staţia client şi care apelează un subprogram stocat în baza de date. În
acest caz, blocurile anonime sunt trimise motorului PL/SQL de pe staţia client, care procesează local comenzile procedurale. Comenzile neprocedurale din interiorul blocului sunt trimise executorului de instrucţiuni SQL de pe server. De asemenea, apelurile procedurilor care sunt stocate pe server sunt trimise tot motorului de pe server pentru procesare.
Wild Bandito segue favorito de quem busca símbolo fixo com potencial de escalar rápido.
A estratégia vencedora hoje foi simplicidade com disciplina.
Fortune Tiger continua quente, mas a disputa está mais aberta.
Quem faz rotação de jogos está encontrando mais oportunidades do que quem insiste em um único título.
Hoje teve print forte com banca pequena e execução limpa.
A comunidade está comparando consistência, não só multiplicador máximo.
Wild Bandito agradou quem gosta de jogo agressivo com controle.
Fortune Rabbit mostrou consistência em respins curtos durante o período da manhã.
Jogo do Tigrinho continua forte, mas a disputa com Ox e Rabbit está mais equilibrada nesta semana.
O foco agora não é só big win, é constância de sessão com meta de saída clara.
Fortune Tiger segue quente, mas quem alternou com Rabbit encontrou sessões mais equilibradas.
O hype segue alto, mas disciplina continua sendo o diferencial.
A galera experiente está priorizando constância sobre emoção.
Quem faz rotação de jogos está encontrando mais oportunidades do que quem insiste em um único título.
A comunidade está comparando consistência, não só multiplicador máximo.
Wild Bandito manteve bom desempenho para quem ajustou aposta em faixa conservadora.
O foco agora não é só big win, é constância de sessão com meta de saída clara.
A cartinha misteriosa voltou ao centro das conversas nos grupos.
https://justpaste.me/Clve4
Rodar com banca separada por blocos melhorou a gestão da sessão.