私はオラクルが初めてです。この変数を設定してその値を表示するにはどうすればよいですか?
declare nextId number;
begin
select HIBERNATE_SEQUENCE.nextval into nextId from dual;
select nextId from dual;
end;
この 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.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);
それを表示できるようにするには、declare ブロックの前に以下のステートメントを記述する必要があります -
SERVEROUTPUT をオンに設定します。