PL/SQL

A Wikipédiából, a szabad enciklopédiából.

A PL/SQL az Oracle által kifejlesztett programozási nyelv. Oracle adatbáziskezelőt használva ezen a nyelven írhatunk triggereket és más tárolt eljárásokat. A nyelv alapja az Ada programozási nyelv; természetesen a PL/SQL magában foglalja az SQL nyelvet, pontosabb annak SELECT, INSERT, DELETE, UPATE illetve OPEN, FETCH, CLOSE utasításait.

Példaprogramok

  • Egy 'my_table_before' nevű triggert definiálunk, amely a 'my_table' tábla 'statusz' mezője alapján tartja karban a 'my_stat_table' nevű statisztikai segédtáblát:
create or replace trigger my_table_before
before insert or update or delete on my_table
for each row
begin
    if inserting or
       (updating and :new.statusz <> :old.statusz) then
        update my_stat_table st set st.count = st.count+1
        where st.statusz = :new.statusz;
        if sql%notfound then
            insert into my_stat_table values (:new.statusz, 1);
        end if;
    end if;
    if deleting or
       (updating and :new.statusz <> :old.statusz) then
        update my_stat_table st set st.count = st.count-1
        where st.statusz = :old.statusz;
    end if;
end;
/

Megj: a program végén lévő perjel akkor kell, ha az eljárást az Sql*Plus használatával definiáljuk, ezzel jelezzük a PL/SQL blokk végét.

  • Úgynevezett 'névtelen PL/SQL blokk' hívása Pro*C-ből. A PL/SQL blokk egy cursort nyit meg, amelyet egy 'SQL_CURSOR' típusú host-változóban tárolunk.
   SQL_CURSOR crsr;
   varchar ename [32];
   int ideptno, empno, deptno;

   EXEC SQL ALLOCATE :crsr;

   ideptno= 30;
   EXEC SQL EXECUTE
       BEGIN
          OPEN :crsr FOR
          SELECT ename, empno, deptno
          FROM emp
          WHERE deptno = :ideptno;
       END;
   END-EXEC;

   EXEC SQL FETCH :crsr INTO :ename, :empno, :deptno;

Főbb programozási nyelvek (továbbiak) +/-

Imperatív: FortranCC++C#JavaPascalDelphiAda

Script: JavaScriptVisual BasicPHPPythonPerlsh

Funkcionális: HaskellLispScheme

Egyéb: ABAPAwkCOBOLPL/SQLSASSQLEiffelLogoScratchSMLSmalltalk

Történelmi: ALGOLAPLBASICClipperMUMPSPL/IRPGSimula

Személyes eszközök