2012-03-01 1 views
7

Sto provando a eseguire il debug di una stored procedure (Oracle). Voglio stampare alcune variabili.come stampare nella procedura memorizzata per Oracle (a scopo di debug)?

Non so quale sia il comando da stampare (o dove trovarlo). Qualcuno può dirmi cos'è?

Grazie

EDIT:

Questo è il mio grilletto:

create or replace 
procedure bns_saa_confs_update_state (
    theID in varchar2 
) 
AS 
begin 
    UPDATE BNS_SAA_CONFIRMATIONS SET SentToWssStatus='T' WHERE ID=theID; 
    commit; 
end; 

voglio stampare theID

risposta

16

Utilizzare la funzione dbms_output.put_line():

declare 
    my_var varchar2(20); 
begin 
    my_var := 'Hello World'; 
    dbms_output.put_line(my_var); 
end; 
/

Assicurarsi di disporre di set serveroutput on se in esecuzione da SQLPlus o di impostare l'output su se in esecuzione da un IDE. Alcuni sviluppatori creeranno una funzione wrapper per semplificare il debug.

4

probabilmente si desidera che il DBMS_OUTPUT pacchetto, vale a dire

DECLARE 
    a INTEGER := 0; 
BEGIN 
    dbms_output.put_line('Starting value: ' || a); 
    a := a + 1; 
    dbms_output.put_line('Ending value: ' || a); 
END; 

Si noti che è generalmente necessario attivare DBMS_OUTPUT nell'applicazione client prima verranno visualizzati i dati. In SQL * Plus, è necessario

set serveroutput on; 

prima di eseguire la stored procedure affinché i dati vengano visualizzati dopo l'esecuzione. Altri strumenti della GUI hanno approcci diversi per abilitare DBMS_OUTPUT.