PL/SQL [Oracle]

  • Le istruzioni si concludono con un “;”
  • I commenti:
    • su linea “–“
    • su più linee  “/* … */”
  • Assegnazione variabile “:=”
  • Tipi di variabili: VARCHAR2, INTEGER, NUMBER, DATE, BOOLEAN, LONG, LONG RAW, CLOB, BINARY_INTEGER
  • Dichiarazione oggetto (si usa spesso per dichiarare una tabella):

CREATE OR REPLACE TYPE type_nomeOggetto AS OBJECT
(
nomeCampo  tipoNomeCampo,
ns NUMBER(2),
evento DATE
);

  • Dichiarazione tabella (si usa spesso come ritorno di una funzione):
    • CREATE OR REPLACE TYPE typ_nomeTabella AS TABLE OF type_nomeOggetto;
  • Dichiarazione tabella esistente:
    • rec_nomeVariabile TABELLA%ROWTYPE;
  • creazione funzione
    • create or replace function NOME_FUNZIONE(Variabile1 tipo_Variabile1, Variabile2 tipo_Variabile2) return tipo_variabile_ritorno is

ELENCO_VARIABILI_USATE_NELLA_FUNZIONI

begin

………

end NOME_FUNZIONE;

  • creazione procedura
    • create or replace procedure NOME_PROCEDURA(Variabile1 tipo_Variabile1, Variabile2 tipo_Variabile2)  is

ELENCO_VARIABILI_USATE_NELLA_PROCEDURA

begin

………

end NOME_PROCEDURA;

  • costrutto IF

IF condizione THEN
istruzioni;
END IF;

  • costrutto IF ELSE

IF condizione THEN
istruzioni;
ELSE
istruzioni;
END IF;

  • Condizioni: =, <, >, <>, IS NULL, IS NOT NULL
  • Cicli FOR

    FOR i IN 1..tbl_CicloVaccinale.count LOOP
dbms_output.put_line(tbl_CicloVaccinale(i).ns || ‘ ‘ ||
tbl_CicloVaccinale(i).min || ‘ ‘ ||
tbl_CicloVaccinale(i).max || ‘ ‘ ||
tbl_CicloVaccinale(i).vacc);
END LOOP;

  • Esecuzione singola query

strQuery:=’SELECT count(*) FROM tabella WHERE idtabella1 = :1 AND idtabella2 = :2′;
BEGIN
EXECUTE IMMEDIATE strQuery
INTO tmpNumber
USING xId1, xId2;
EXCEPTION
WHEN no_data_found THEN
RETURN ‘-‘;
END;

  • Cursori
    • Dichiarazione

CURSOR cur_elencoCicli(idAnagrafica_In number, idvacMalattia_In number) IS
SELECT vcp.idciclo, vc.codice, vc.descrizione,
FROM vacciclipaziente vcp, vaccicli vc, vacdaeseguire vde
WHERE vcp.idciclo = vc.idcicli
AND   vde.idvacciclo = vcp.idciclo
AND   vde.idanagrafica = vcp.idanagrafica
AND   vcp.idanagrafica = idAnagrafica_In
AND   vcp.idvacmalattia = idvacMalattia_In
AND   vcp.statociclo IN (0,1,2,6,7);
rec_elencoCicli cur_elencoCicli%ROWTYPE;

Apertura

OPEN cur_elencoCicli(rec_elencoPazienti.idanagrafica, malattieDaPrenotare(i).Idvacmalattie);

LOOP
FETCH cur_elencoCicli INTO rec_elencoCicli;
EXIT WHEN cur_elencoCicli%NOTFOUND;
totRec_elencoCicli:=totRec_elencoCicli + 1;
END LOOP;

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.