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

Truy vấn động PLSQL

SQL động không thể thấy biến PL / SQL của bạn:bạn cần chuyển cho nó một chuỗi có thể được thực thi trong phạm vi của công cụ SQL. Vì vậy, bạn cần nối tên bảng với văn bản soạn sẵn của câu lệnh:

query1 := 'SELECT max(c)  FROM ' || variable_name;

Bạn cũng cần trả kết quả của truy vấn thành một biến.

Đây là cách nó hoạt động (Tôi đã loại bỏ một số mã không cần thiết khỏi ví dụ của bạn):

DECLARE    
 c_table VARCHAR2(40);
 c_obj VARCHAR2(20);
BEGIN
   for lrec in ( select a as tab_name from A )
   LOOP
      EXECUTE IMMEDIATE 'SELECT max(object_ref)  FROM ' || lrec.tab_name 
           into c_obj ;
      dbms_output.put_line('Maximum value: '|| lrec.tab_name
           || '='|| c_obj);
   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. JDBC Metada truy xuất thông tin Ràng buộc

  2. Làm thế nào để lặp qua các lược đồ khác nhau và thực thi một số sql trên mỗi lược đồ?

  3. Nhà cung cấp 'MSDAORA.1' không được đăng ký trên máy cục bộ

  4. Kiểm tra mật khẩu của người dùng có hợp lệ hay không trong plsql

  5. Có thể chạy tập lệnh SQLPLUS trên tệp được mã hóa là UTF-8 với BOM không