2013-09-24 13 views
5

Sono nuovo di Oracle. Come posso impostare questa variabile e mostrare il suo valore?Come selezionare il valore di una variabile in Oracle?

declare nextId number; 
begin 
     select HIBERNATE_SEQUENCE.nextval into nextId from dual;  
     select nextId from dual; 
end; 

Si lamenta che una clausola INTO è prevista in questa istruzione SELECT.

risposta

10

Se si voleva solo conoscere il valore successivo o corrente del sequenza, si può semplicemente utilizzare query SQL:

SELECT HIBERNATE_SEQUENCE.nextval FROM dual; 
SELECT HIBERNATE_SEQUENCE.currval FROM dual; 

Per quanto sapere come procedere in PL/SQL (prima 11g):

SET SERVEROUTPUT ON 
DECLARE 
    nextId NUMBER; 
BEGIN 
    SELECT HIBERNATE_SEQUENCE.nextval INTO nextId FROM dual; 
    dbms_output.put_line(nextId); 
END; 

Dal 11g: è la sequenza più semplificata da utilizzare come plsql:

SET serveroutput ON 
DECLARE 
    nextId NUMBER := HIBERNATE_SEQUENCE.nextval; 
BEGIN 
    dbms_output.put_line(nextId); 
END; 

o semplicemente

BEGIN 
    dbms_output.put_line(HIBERNATE_SEQUENCE.nextval); 
END; 

Maggiori dettagli: Click here

+0

+1 Ma poiché 11g è possibile accedere direttamente alle sequenze in PL/SQL. Puoi sostituire la riga 5 con 'nextID: = HIBERNATE_SEQUENCE.nextval;'. –

+0

Ya grazie @jonearles, ho aggiornato la risposta. – ajmalmhd04

6

In un blocco PL/SQL, non è possibile scrivere un'istruzione SQL come

select nextId from dual; 

è per questo che si sta mostrando un errore. Dal modo in cui non hai bisogno di questa affermazione del tutto. Per visualizzarla come uscita si dovrebbe usare -

DBMS_OUTPUT.PUT_LINE(nextId); 

Per essere in grado di visualizzarlo è necessario scrivere la dichiarazione seguente prima del blocco declare -

SET SERVEROUTPUT ON;

+0

Amico mi hai salvato la vita, grazie !! – ExtremeSwat

Problemi correlati