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

Tại sao thủ tục được lưu trữ này lại chèn các giá trị NULL vào bảng?

Để trả lời câu hỏi của bạn về lý do tại sao nó lại chèn null, đó là vì bạn không cung cấp bất kỳ giá trị nào cho các tham số thủ tục khi bạn thực thi nó.

Dựa trên những gì bạn đã nêu trong câu hỏi và nhận xét của bạn ở trên, có vẻ như bạn đang thiếu một số kỹ năng cơ bản khi làm việc với Oracle. Mã bạn đã viết là một thủ tục, không phải là một hàm, vì vậy bạn không thể gọi nó bằng SELECT bản tường trình. Một thủ tục được gọi bên trong một khối plsql. Thủ tục của bạn như đã viết có hai đối số, mà bạn phải chuyển cho lệnh gọi thủ tục thông qua mã gọi. Mã thủ tục bạn đã viết không tìm kiếm dữ liệu từ XML_HOURS_LOAD bảng.

Tất cả chúng tôi đều là những người mới học Oracle. Bạn sẽ muốn xem một số hướng dẫn để bắt đầu với các nguyên tắc cơ bản về mã hóa pl / sql để giúp làm rõ sự khác biệt giữa các hàm và các thủ tục được lưu trữ cũng như cách sử dụng các đối số tham số.

Từ những gì bạn đã viết trong câu hỏi của mình, tôi tin rằng đây là mã bạn muốn:

DECLARE
   p_code IS XML_HOURS_LOAD.code%TYPE,
   p_product IS XML_HOURS_LOAD.product%TYPE;
   CURSOR cXmlHoursLoadCursor IS (SELECT code, product FROM xml_hours_load); --You can add a WHERE condition to this cursor query
BEGIN
    FOR v IN cXmlHoursLoadCursor LOOP
       Cascade_Load(v.code, v.product);
       COMMIT; --I recommend calling commit here instead of inside your stored procedure so that the calling code has control of the transaction state
    END LOOP;
END;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php:loading trình điều khiển oracle báo lỗi Không thể tải thư viện động - Không thể tìm thấy quy trình đã chỉ định.

  2. Độ trễ của Oracle giữa cam kết và chọn

  3. Oracle + dbunit được AmbiguousTableNameException

  4. Câu lệnh SELECT sử dụng bộ Đại số

  5. Cách mã hóa dữ liệu trong Oracle bằng PL SQL