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

それを表示できるようにするには、declare ブロックの前に以下のステートメントを記述する必要があります -

SERVEROUTPUT をオンに設定します。

于 2013-09-24T09:33:21.177 に答える