Consigli ed esempi utili su PL/SQL ORACLE
Piccoli consigli ed esempi sull'uso del linguaggio PL/SQL in ambiente ORACLE.
Verranno indicate anche alcune utilissime query.
Ecco un primo esempio di codice:
BEGIN
update MIO_TABLESPACE.MIA_TABELLA E
set
E.indirizzo = 'VIA ESEMPIO'
where
E.id = 122;
EXCEPTION
when OTHERS then
dbms_output.put_line( SQLERRM );
END;
In questo esempio si fa un update su una determinata tabella Orace.
In particolare si vede come stampare una eventuale eccezione (o errore) SQL su finestra di output.
Ecco un altro esempio:
DECLARE
r number:=0;
BEGIN
r := miotablespace.miopackage.miaFunzione(...);
dbms_output.put_line (r) ;
END;
In questa maniera si può invocare una Stored Procedure Oracle manualmente sempre mediante del codice PL/SQL.
Abbiamo visto come con l'istruzione:
dbms_output.put_line (r) ;
si possa stampare su finestra di output.
Come concatenare due valori? Si usano le pipe.
dbms_output.put_line (r || secondoValore) ;
Vediamo altri esempi:
select <tablespace>.<package>.<nomefunzione>(1, 2, <argomenti>) from dual;
Questo è un altro modo per invocare una stored procedure: mediante una query!!!
Esempi di dichiarazioni di variabili:
variabile_numerica number :=0;
variabile_intera INTEGER :=8227;
variabile_stringa varchar2(99) := 'ROSSI';
variabile_data date := sysdate;
p varchar2(8) := 'dd/mm/yy';
Vediamo ora un esempio un po' più completo:
DECLARE
r number:=0;
BEGIN
BEGIN
dbms_output.put_line ('START FUNZIONE' ) ;
r := MIO_TABLESPACE.MIO_PKG.CallMyFunction( ... );
dbms_output.put_line ('RISULTATO:' || r) ;
dbms_output.put_line ('END FUNZIONE' ) ;
-- Codice da usare per test: chiama sempre la rollback
-- if r>= 0 then
-- r := -1;
-- end if;
EXCEPTION
WHEN OTHERS THEN
r := -2;
dbms_output.put_line( SQLERRM );
END;
if r>=0 then
dbms_output.put_line ('commit' || r) ;
commit;
else
dbms_output.put_line ('rollback' || r) ;
rollback;
end if;
END;
Questo è un esempio completo di chiamata di una stored procedure con gestione manuale della transazione.
Volete abilitare i TRACE delle query coinvolte nelle stored procedure Oracle?
Allora bisogna mettere il codice seguente:
execute immediate 'alter session set tracefile_identifier = IDENTIFICATIVO_ESEMPIO';
dbms_monitor.SESSION_TRACE_ENABLE(BINDS => true, WAITS => true);
questo codice serve appunto ad abilitare il TRACE, che sarà scritto sul file di log di Oracle.
Quando lo si vuole disabilitare è sufficiente inderire il codice:
dbms_monitor.SESSION_TRACE_DISABLE();
ecco fatto!
Cambiare la Password di un utente
Ecco come cambiare la password di un utente del DB mediante query:
ALTER USER <nome_utente> IDENTIFIED BY "<nuova_pwd>" REPLACE "<vecchia_pwd>";