Oracleは初めてです。この変数を設定してその値を表示するにはどうすればよいですか?
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より前)で続行する方法を知るには:
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;
詳細: ここをクリック
Pl/sqlブロックでは、次のようなSQL文を記述できません。
select nextId from dual;
それがあなたにエラーを示している理由です。ちなみに、このステートメントはまったく必要ありません。出力として表示するには、次を使用する必要があります-
DBMS_OUTPUT.PUT_LINE(nextId);
それを表示できるようにするには、宣言ブロックの前に以下のステートメントを書く必要があります-
SERVEROUTPUTをオンに設定します。