2010-08-11 33 views

Trả lời

35

START VỚI KHOẢN chấp nhận một số nguyên. Bạn có thể tạo thành câu lệnh "Tạo chuỗi" một cách động và sau đó thực thi nó bằng cách sử dụng ngay lập tức để thực hiện điều này.

declare 
    l_new_seq INTEGER; 
begin 
    select max(id) + 1 
    into l_new_seq 
    from test_table; 

    execute immediate 'Create sequence test_seq_2 
         start with ' || l_new_seq || 
         ' increment by 1'; 
end; 
/

Kiểm tra các liên kết này.

http://download.oracle.com/docs/cd/B14117_01/server.101/b10759/statements_6014.htm
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/executeimmediate_statement.htm

+2

Tôi đã có một chút vấn đề khi bàn là mới vì "max (id)" trả về null. Vì vậy, tôi phải thay đổi lựa chọn thành: "select nvl (max (id), 0) + 1" Có thể ai đó khác cũng gặp phải vấn đề tương tự – steven2308

-1

Ở đây tôi có ví dụ của tôi mà làm việc tốt:

declare 
ex number; 
begin 
    select MAX(MAX_FK_ID) + 1 into ex from TABLE; 
    If ex > 0 then 
    begin 
      execute immediate 'DROP SEQUENCE SQ_NAME'; 
     exception when others then 
     null; 
    end; 
    execute immediate 'CREATE SEQUENCE SQ_NAME INCREMENT BY 1 START WITH ' || ex || ' NOCYCLE CACHE 20 NOORDER'; 
    end if; 
end; 
Các vấn đề liên quan