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, pontosabban annak SELECT, INSERT, DELETE, UPDATE 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;
|
||||||||||||||||||||||||||

