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

Kích hoạt chọn bản ghi con, nhân các giá trị của chúng và cập nhật bản ghi mẹ

Bạn có một số vấn đề, nhưng vấn đề cơ bản nhất là bạn không nên làm điều này chút nào. Cố gắng lưu trữ - và đồng bộ hóa - một giá trị luôn có thể được tính toán là một sai sót cơ bản trong thiết kế.

Bây giờ, với chính mã. Bạn có

SELECT SUM(VALUE) into product

Mục tiêu của INTO của bạn phải là một biến được khai báo. Có vẻ như bạn đang cố CHỌN .. VÀO tên cột.

Bạn nên đặt tên cho các biến cục bộ để phân biệt giữa chúng với tên cột. Do đó, thay vì

DECLARE
value number;
amount number;
total number;

Bạn nên có

DECLARE
v_value number;
v_amount number;
v_total number;

Ngược lại, bạn nên nghĩ về các quy ước đặt tên tiêu chuẩn cho các bảng và cột của mình. Đối với các cột, tôi sử dụng và đề xuất tên ở dạng , do đó ORDER_ID, PRODUCT_NAME, v.v. Đây là gì với PRODUCT_ID_PRODUCT, ORDER_ID_ORDER? Việc lặp lại tên bảng trong các tên cột thường không có lợi. Mặc dù đôi khi nó có ý nghĩa vì nó vẫn tuân theo định dạng tính từ_ đại từ, như cột id của bảng ORDERS được đặt tên là ORDER_ID. Cũng hãy nghĩ về tên bảng, tôi thường đặt tên bảng của mình là danh từ số nhiều vì các bảng theo dõi nhiều trường hợp của một thực thể nào đó. Nếu tên bảng có ý nghĩa đối với tên cột (như ORDER_ID) thì nó sẽ là số ít, vì một hàng riêng lẻ theo dõi một phiên bản duy nhất của thực thể.

Cuối cùng, thật khó để khuyên bạn nên sửa đổi mã hóa nếu không biết các bảng. Bạn đã đưa ra một mô tả mơ hồ về chúng, nhưng tốt hơn là hãy bày mọi thứ lên bàn. Xem ví dụ tối thiểu-có thể tái tạo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Viết chế độ xem oracle DB dựa trên sự khác biệt về dấu thời gian cột khác nhau

  2. Chuyển đổi các giá trị được phân tách bằng dấu phẩy thành các hàng trong Oracle

  3. Ubuntu ORA-24960:thuộc tính OCI_ATTR_USERNAME lớn hơn độ dài tối đa cho phép là 255

  4. oracle plsql nếu không tìm thấy lặp lại

  5. Oracle - Bảng sao chép - Cấu trúc, ràng buộc dữ liệu và tất cả