2013-09-24 9 views
5

Jestem nowy w firmie Oracle. Jak mogę ustawić tę zmienną i pokazać jej wartość?Jak wybrać wartość zmiennej w Oracle?

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

Narzeka, że ​​w tym oświadczeniu SELECT oczekuje się klauzuli INTO.

Odpowiedz

10

Gdybyś tylko chciał wiedzieć następny lub wartości bieżącej sekwencji, w można po prostu użyć zapytania sql:

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

sposób, aby wiedzieć, jak postępować w PL/SQL (przed 11g):

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

od 11g: jest prostszy sekwencja do wykorzystania w plsql jako:

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

lub po prostu

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

Więcej szczegółów: Click here

+0

+1 Ale od 11g można uzyskać bezpośredni dostęp do sekwencji w PL/SQL. Możesz zamienić wiersz 5 na 'nextID: = HIBERNATE_SEQUENCE.nextval;'. –

+0

Ya dzięki @jonearles, zaktualizowałem odpowiedź. – ajmalmhd04

6

W bloku PL/SQL, nie można napisać instrukcję SQL jak

select nextId from dual; 

To dlatego jest pokazując błąd. Przy okazji nie potrzebujesz tego stwierdzenia. Aby wyświetlić go jako wyjście należy użyć -

DBMS_OUTPUT.PUT_LINE(nextId); 

aby móc wyświetlić je trzeba napisać oświadczenie o następującej treści przed blokiem declare -

SET SERVEROUTPUT ON;

+0

Dude uratowałeś mi życie, dzięki! – ExtremeSwat

Powiązane problemy