2013-09-24 112 views

Trả lời

10

Nếu bạn chỉ muốn biết giá trị tiếp theo hoặc hiện tại của chuỗi, bạn chỉ có thể sử dụng truy vấn sql:

SELECT HIBERNATE_SEQUENCE.nextval FROM dual; 
SELECT HIBERNATE_SEQUENCE.currval FROM dual; 

Như để biết làm thế nào để tiến hành trong pl/sql (trước 11g):

SET SERVEROUTPUT ON 
DECLARE 
    nextId NUMBER; 
BEGIN 
    SELECT HIBERNATE_SEQUENCE.nextval INTO nextId FROM dual; 
    dbms_output.put_line(nextId); 
END; 

Từ 11g: đó là chuỗi đơn giản hơn để sử dụng trong PLSQL như:

SET serveroutput ON 
DECLARE 
    nextId NUMBER := HIBERNATE_SEQUENCE.nextval; 
BEGIN 
    dbms_output.put_line(nextId); 
END; 

hay đơn giản là

BEGIN 
    dbms_output.put_line(HIBERNATE_SEQUENCE.nextval); 
END; 

Thông tin chi tiết: Click here

+0

+1 Nhưng kể từ 11g bạn có thể truy cập trực tiếp chuỗi trong PL/SQL. Bạn có thể thay thế dòng 5 bằng 'nextID: = HIBERNATE_SEQUENCE.nextval;'. –

+0

Ya cảm ơn @jonearles, tôi đã cập nhật câu trả lời. – ajmalmhd04

6

Trong một khối PL/SQL, bạn không thể viết một câu lệnh SQL như

select nextId from dual; 

Đó là lý do tại sao nó được hiển thị cho bạn một lỗi. Bằng cách này bạn không cần tuyên bố này hoàn toàn. Để hiển thị nó như một đầu ra bạn nên sử dụng -

DBMS_OUTPUT.PUT_LINE(nextId); 

Để có thể hiển thị nó, bạn cần phải viết báo cáo kết quả dưới đây trước khi khối khai báo -

SET SERVEROUTPUT ON;

+0

Dude bạn đã cứu mạng tôi, cảm ơn !! – ExtremeSwat