Tôi có đoạn mã sau:ora-00.933: lệnh SQL không đúng cách kết thúc
begin
for i in 1..2 loop
insert into dba_xy.despatch
select desp_id_seq.nextval,
dbms_random.string('U',5),
trunc(dbms_random.value(0000,9999)),
prod_id from dba_xy.product
prod_name from dba_xy.product;
end loop;
cuối;
Khi tôi chạy nó, oracle mang lại cho tôi được thông báo lỗi sau:
prod_name from dba_xy.product;
*
LỖI tại dòng 8: ORA-06.550: dòng 8, cột 29: PL/SQL: ORA-00.933: SQL lệnh không được kết thúc đúng cách ORA-06550: dòng 3, cột 2: PL/SQL: Câu lệnh SQL bị bỏ qua
Điều tôi đang cố gắng là liên kết prod_id và prod_name hiện tại với dữ liệu mới được chèn vào bảng. Tôi đã đặt prod_name làm khóa duy nhất trong bảng sản phẩm và prod_id làm khóa chính và đã đặt cả hai ràng buộc khóa ngoài trong bảng despatch. Tôi cần phải bao gồm prod_name vào bảng despatch để cho phép độc giả của bảng để có thêm sự hiểu biết về những gì prod_name cần phải được tìm thấy vv, thay vì chỉ cho prod_id mà sẽ làm cho không có ý nghĩa với họ cả. Nhưng có lẽ tôi đã nghĩ rằng tôi không cần prod_id trong bảng despatch. Xin vui lòng giúp đỡ.
Sau khi thả cột prod_id từ bảng mau lẹ, tôi thay đổi mã của tôi:
begin
for i in 1..2 loop
insert into dba_xy.despatch
select desp_id_seq.nextval,
dbms_random.string('U',5),
trunc(dbms_random.value(0000,9999)),
prod_name from dba_xy.product;
end loop;
cuối; /
và thông báo lỗi sau đã đưa ra về những hạn chế duy nhất: bắt đầu * ERROR at line 1: ORA-00001: hạn chế duy nhất (DBA_XY.PROD_NAME_UC) vi phạm ORA-06.512: tại dòng 3
Tôi đã thử chạy mã xem của bạn và đã xảy ra lỗi sau: tham gia dba_xy.product p * L ERI tại dòng 5: ORA-00905: thiếu từ khóa – taksIV
Tệ của tôi - Tôi đã quên tiêu chí JOIN thực tế. Hãy thử mã xem ngay bây giờ. –
Haha, đó là tất cả tốt. Cảm ơn bạn. – taksIV