Helpex - Trao đổi & giúp đỡ Đăng nhập
3

Tôi đang cố gắng tăng một chuỗi theo giá trị grater từ cột id (kiểu số nhưng không phải kiểu int). Đối với điều này, tôi đã cố gắng khai báo một biến int và chọn vào đó giá trị tối đa từ bảng như sau:

declare
        last_id int;
begin
        select max(id) into last_id from my_table;
        alter sequence my_table_seq increment by last_id;    
end;

Tuy nhiên, tôi gặp lỗi này

ORA-06550: line 2, column 19:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:
  := . ( @ % ; not null range default character

Tôi đang sử dụng Oracle 11g. Đây là ảnh chụp màn hình

3 hữu ích 4 bình luận 361 xem chia sẻ
1
declare
     last_id number;
begin
     select max(id) into last_id from my_table;
     execute immediate 'alter sequence my_table_seq increment by ' || to_char(last_id);    
end;

Sử dụng bất kỳ kiểu dữ liệu số oracle thay vìint

Sử dụng execute immediatecho bất kỳ DDNtronganonymous block

1 hữu ích 5 bình luận chia sẻ
1

Đã tạo các đối tượng tương tự và nó hoạt động như mong đợi.

Đề nghị bạn thử cách dưới đây:

1. Thay đổi cột của bạn từ IDsang something_id.

2.Xóa dấu ngoặc kép khỏi lược đồ và tên bảng (chỉ đưa ra schema.table_name)

3.Đảm bảo rằng bạn không bỏ lỡ dấu chấm phẩy ở cuối câu lệnh và tất cả các biến được khai báo đúng cách.

Nếu vẫn không hoạt động thì hãy chuyển sang phương pháp thử và sai.

  1. Chỉ cần lấy khối đơn giản và thử in IDgiá trị một mình.

  2. Sau đó, tiếp tục thêm logic của bạn (gán giá trị cho last_idvà thử in last_id).

  3. Sau đó, cuối cùng thêm execute immediatecâu lệnh của bạn và xem nó có hoạt động không.

Create table general_discount_type
(id number);
    -- Table created.

Begin
insert into general_discount_type values(101);
insert into general_discount_type values(102);
insert into general_discount_type values(103);
insert into general_discount_type values(104);
End;
-- Statement processed.

Create sequence general_discount_type_seq
start with 1
increment by 1
NOCACHE
NOCYCLE;
-- Sequence created.

 Declare 
 last_id number;
 Begin
 select max(id) into last_id from MAHI_SCHEMA.general_discount_type;
 execute immediate 'alter sequence MAHI_SCHEMA.general_discount_type_seq increment by ' 
 || to_char(last_id);
 dbms_output.put_line('Value in last_id is : ' || last_id);
 End;
  -- Value in last_id is : 104

Đầu ra

Khai báo biến Oracle11g

1 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ sql oracle plsql oracle11g , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading