Sql 如何在Oracle中选择变量的值?

Sql 如何在Oracle中选择变量的值?,sql,oracle,select,select-into,Sql,Oracle,Select,Select Into,我是甲骨文的新手。如何设置此变量并显示其值 declare nextId number; begin select HIBERNATE_SEQUENCE.nextval into nextId from dual; select nextId from dual; end; 它抱怨此SELECT语句中需要INTO子句。如果您只想知道序列的下一个或当前值, 您可以简单地使用sql查询: SELECT HIBERNATE_SEQUENCE.nextv

我是甲骨文的新手。如何设置此变量并显示其值

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

它抱怨此SELECT语句中需要INTO子句。

如果您只想知道序列的下一个或当前值, 您可以简单地使用sql查询:

SELECT HIBERNATE_SEQUENCE.nextval FROM dual;
SELECT HIBERNATE_SEQUENCE.currval FROM dual;
了解如何在pl/sql中继续(在11g之前):

自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;

更多详细信息:

在pl/sql块中,您不能像这样编写sql语句

select nextId from dual;
这就是它向您显示错误的原因。顺便说一句,你完全不需要这句话。要将其显示为输出,应使用-

DBMS_OUTPUT.PUT_LINE(nextId);
为了能够显示它,您需要在declare块之前编写下面的语句-


打开服务器输出

+1,但由于11g,您可以直接访问PL/SQL中的序列。您可以将第5行替换为
nextID:=HIBERNATE\u SEQUENCE.nextval
DBMS_OUTPUT.PUT_LINE(nextId);