Bạn không thể tạo %ROWTYPE
biến cho một bảng không xác định và bạn không thể tham chiếu tĩnh đến tên cột khi bạn không biết tên bảng tại thời điểm biên dịch.
Bạn có thể sử dụng gói dbms_sql để xử lý các câu lệnh SQL động hoàn toàn. Bạn sẽ cần chuẩn bị câu lệnh SQL, mô tả các cột để tìm ra số lượng cột và kiểu dữ liệu của chúng, liên kết các biến thích hợp, sau đó tìm nạp dữ liệu. Đây là cách viết mã rườm rà hơn nhiều so với ví dụ bạn đã đăng nhưng nó mang lại cho bạn sự linh hoạt cao độ.
Có một số ví dụ về việc sử dụng gói dbms_sql trong tài liệu mà tôi đã liên kết đến. Bạn cũng có thể muốn xem hàm dump_csv của Tom Kyte ghi kết quả của một truy vấn tùy ý vào tệp CSV bằng cách sử dụng UTL_FILE
. Nếu bạn thực sự muốn ghi dữ liệu vào DBMS_OUTPUT
, bạn có thể chỉ cần thay thế UTL_FILE
cuộc gọi với DBMS_OUTPUT
. Nhưng tôi khá chắc rằng bạn muốn làm điều gì đó hữu ích hơn là chỉ ghi dữ liệu vào DBMS_OUTPUT
đệm để thủ tục của Tom có thể gần hơn với những gì bạn đang thực sự cố gắng hoàn thành.