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

Oracle 11g - Chạy con trỏ PL / SQL

Có một số vấn đề:

  • Bạn cần dấu chấm phẩy sau định nghĩa con trỏ (tức là sau truy vấn).
  • Bạn không thể sử dụng bookCursor vừa là tên của con trỏ vừa là tên của bản ghi mà bạn tìm nạp. (Tôi nhận thấy rằng một đoạn mã của bạn sử dụng bookCursorRec cho phần sau, vì vậy tôi sẽ tiếp tục với điều đó.)
  • fetch cần tìm nạp vào cái gì đó, tức là, vào bookCursorRec .
  • Bạn cần dấu chấm phẩy sau lệnh gọi đến dbms_output.put_line .
  • Truy vấn của bạn có vẻ sai; có vẻ như cả hai liên kết đều là liên kết chéo.

Kết hợp nó lại với nhau và điều chỉnh định dạng và cấu trúc một chút để PL / SQL "thành ngữ" hơn một chút:

DECLARE
    CURSOR bookcursor IS
    SELECT btname, isbn, pubname, datedestroyed
      FROM booktitle bt
      JOIN publisher p
        ON bt.pid = p.id -- this is just a guess
      JOIN bookcopy bc
        ON bt.bcid = bc.id -- this is just a guess
     WHERE datedestroyed IS NULL
    ;
    bookcursorrec bookcursor%ROWTYPE;
BEGIN
    OPEN bookcursor;
    LOOP
        FETCH bookcursor INTO bookcursorrec;
        EXIT WHEN bookcursor%NOTFOUND;
        dbms_output.put_line( 'ISBN: ' ||bookcursorrec.isbn
                              || ' - Book Name: ' || bookcursorrec.btname
                              || ' - Publisher: ' || bookcursorrec.pubname );
    END LOOP;
    CLOSE bookcursor;
END;
/

Nhân tiện, các số nhận dạng Oracle chủ yếu phân biệt chữ hoa chữ thường (theo đó chúng được chuyển đổi hoàn toàn thành chữ hoa trừ khi bạn đặt chúng trong dấu ngoặc kép), vì vậy thông thường mọi người sẽ sử dụng các số nhận dạng như book_cursor_recdate_destroyed chứ không phải là bookCursorRec (=bookcursorrec ) và dateDestroyed (=datedestroyed ).



  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 SQL CASE WHEN ORA-00932:kiểu dữ liệu không nhất quán:CHAR dự kiến ​​nhận được NUMBER 00932. 00000 - kiểu dữ liệu không nhất quán:dự kiến% s có% s

  2. làm thế nào để hạn chế số cột được cập nhật bằng oracle?

  3. Có cần thiết phải vứt bỏ DbCommand sau khi sử dụng không?

  4. Cách chọn một nhóm các mục có liên quan trong Oracle SQL

  5. Cách triển khai ora_hash (băm có thể gieo hạt chia bất kỳ loại dữ liệu sql nào thành n nhóm)