Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

thực hiện trình tự thay đổi ngay lập tức không hoạt động

Cả alter sequence các câu lệnh đang hoạt động, đó là sự gia tăng ở giữa điều đó không xảy ra. nextval lệnh gọi trong vòng lặp của bạn không được đánh giá vì câu lệnh select không gửi đầu ra của nó ở bất kỳ đâu. Từ tài liệu , một ghi chú tình cờ đề cập đến chính xác những gì bạn đang làm:

Vì vậy, bạn cần chọn giá trị đó thành một cái gì đó:

declare
 st VARCHAR(1024);
 val number;
begin
  for x in (SELECT sequence_name FROM USER_SEQUENCES) loop
      st := 'ALTER SEQUENCE ' || x.sequence_name ||  ' INCREMENT BY 1000';
      execute immediate st;
      st := 'select ' || x.sequence_name ||  '.nextval from dual';
      execute immediate st into val;
      st := 'ALTER SEQUENCE ' || x.sequence_name ||  ' INCREMENT BY 1';
      execute immediate st;
  end loop;
end;
/

Tôi đã thêm một val biến và một into val mệnh đề thứ hai thực thi ngay lập tức.

Để chứng minh rằng nó hoạt động ngay bây giờ:

create sequence s42;

Sequence s42 created.

declare
 st VARCHAR(1024);
 n number;
begin
  for x in (SELECT sequence_name FROM USER_SEQUENCES) loop
      st := 'ALTER SEQUENCE ' || x.sequence_name ||  ' INCREMENT BY 1000';
      execute immediate st;
      st := 'select ' || x.sequence_name ||  '.nextval from dual';
      execute immediate st into n;
      st := 'ALTER SEQUENCE ' || x.sequence_name ||  ' INCREMENT BY 1';
      execute immediate st;
  end loop;
end;
/

anonymous block completed

select s42.nextval from dual;

   NEXTVAL
----------
      1001 

Không có into , điều này quay trở lại với 1 thay vì 1001, đó là những gì bạn đang thấy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle Analytics - phân vùng và thứ tự các truy vấn sql

  2. Entity Framework Oracle Timestamp

  3. Thực hành tốt để mở / đóng các kết nối trong ứng dụng asp.net?

  4. Không tìm thấy ứng dụng khách Oracle và các thành phần mạng

  5. Cách chuyển XML dưới dạng tham số đến thủ tục được lưu trữ trong Oracle