The*_*ght 8 sql oracle select select-into
我是Oracle的新手.如何设置此变量并显示其值?
declare nextId number;
begin
select HIBERNATE_SEQUENCE.nextval into nextId from dual;
select nextId from dual;
end;
Run Code Online (Sandbox Code Playgroud)
它抱怨在这个SELECT语句中需要一个INTO子句.
ajm*_*d04 11
如果您只想知道序列的下一个或当前值,您可以简单地使用sql查询:
SELECT HIBERNATE_SEQUENCE.nextval FROM dual;
SELECT HIBERNATE_SEQUENCE.currval FROM dual;
Run Code Online (Sandbox Code Playgroud)
至于知道如何在pl/sql(11g之前)中继续:
SET SERVEROUTPUT ON
DECLARE
nextId NUMBER;
BEGIN
SELECT HIBERNATE_SEQUENCE.nextval INTO nextId FROM dual;
dbms_output.put_line(nextId);
END;
Run Code Online (Sandbox Code Playgroud)
从11g开始:它是在plsql中使用的更简化的序列:
SET serveroutput ON
DECLARE
nextId NUMBER := HIBERNATE_SEQUENCE.nextval;
BEGIN
dbms_output.put_line(nextId);
END;
Run Code Online (Sandbox Code Playgroud)
或者干脆
BEGIN
dbms_output.put_line(HIBERNATE_SEQUENCE.nextval);
END;
Run Code Online (Sandbox Code Playgroud)
更多细节:点击这里
小智 7
在pl/sql块中,您不能编写类似的SQL语句
select nextId from dual;
Run Code Online (Sandbox Code Playgroud)
这就是为什么它会向您显示错误.顺便说一句,你完全不需要这个陈述.要将其显示为输出,您应该使用 -
DBMS_OUTPUT.PUT_LINE(nextId);
Run Code Online (Sandbox Code Playgroud)
为了能够显示它,你需要在声明块之前写下面的语句 -
SET SERVEROUTPUT ON;