11

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

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

它抱怨在这个 SELECT 语句中需要一个 INTO 子句。

4

2 回答 2

14

如果您只想知道序列的下一个或当前值,您可以简单地使用 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;

更多详情:点击这里

于 2013-09-24T09:32:13.250 回答
8

在 pl/sql 块中,您不能编写类似的 SQL 语句

select nextId from dual;

这就是它向您显示错误的原因。顺便说一句,您完全不需要此声明。要将其显示为输出,您应该使用 -

DBMS_OUTPUT.PUT_LINE(nextId);

为了能够显示它,您需要在声明块之前编写以下语句 -

设置服务器输出;

于 2013-09-24T09:33:21.177 回答