Как выбрать значение переменной в Oracle?

Я новичок в Оракле. Как я могу установить эту переменную и показать ее значение?

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

Он жалуется, что в этом операторе SELECT ожидается предложение INTO.


person The Light    schedule 24.09.2013    source источник


Ответы (2)


Если вы хотите узнать только следующее или текущее значение последовательности, вы можете просто использовать sql-запрос:

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

Чтобы узнать, как действовать в pl/sql (до 11g):

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

Начиная с 11g: это более упрощенная последовательность для использования в plsql:

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

или просто

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

Дополнительные сведения: Нажмите здесь

person ajmalmhd04    schedule 24.09.2013
comment
+1 Но с 11g вы можете напрямую обращаться к последовательностям в PL/SQL. Вы можете заменить строку 5 на nextID := HIBERNATE_SEQUENCE.nextval;. - person Jon Heller; 24.09.2013

В блоке pl/sql вы не можете написать оператор SQL, например

select nextId from dual;

Вот почему он показывает вам ошибку. Кстати, вам это утверждение вообще не нужно. Чтобы отобразить его как вывод, вы должны использовать -

DBMS_OUTPUT.PUT_LINE(nextId);

Чтобы иметь возможность отобразить его, вам нужно написать приведенный ниже оператор перед блоком объявления:

УСТАНОВИТЬ ВЫХОД СЕРВЕРА;

person Aditya Kakirde    schedule 24.09.2013