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

Thực thi truy vấn Sql động trong Oracle

Động Chuỗi phải được đặt trong 'Dấu ngoặc kép'

OPEN OUT_CUR FOR
     'SELECT * FROM MYTABLE WHERE ID '|| DYN_QUERY;

EXECUTE IMMEDIATE cho phép kết quả Nhiều hàng, nếu bạn sử dụng BULK COLLECT

Ví dụ:

DECLARE
  TYPE myarray IS TABLE OF VARCHAR2(100);
  v_array myarray;
BEGIN
  EXECUTE IMMEDIATE 'select ''x'' from dual union all select ''y'' from dual'
    BULK COLLECT INTO v_array;

  --Or you could use the alternative quoting mechanism to avoid doubling quotation marks.
  --EXECUTE IMMEDIATE q'[select 'x' from dual union all select 'y' from dual]'
  --  BULK COLLECT INTO v_array;

  FOR i IN 1..v_array.count
  LOOP
    DBMS_OUTPUT.PUT_LINE(v_array(i));
  END LOOP;
END;

EXECUTE IMMEDIATE sử dụng biến ràng buộc ;

String := 'SELECT * FROM EMP WHERE name = :name AND age = :age AND :name <> ''Mahesh''';

EXECUTE IMMEDIATE String USING 'Mahi',21,'Mahi';
<OR>
EXECUTE IMMEDIATE String USING proc_variable1,proc_variable2,proc_variable1;



  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 nhiều trường trong Tham số Chọn IN

  2. In các trường Bản ghi trong PL / SQL

  3. Liên kết int64 (SQL_BIGINT) làm tham số truy vấn gây ra lỗi trong khi thực thi trong Oracle 10g ODBC

  4. Các từ khóa IS so với AS cho PL / SQL Oracle Chức năng hoặc Tạo thủ tục

  5. Oracle - chữ không khớp với lỗi chuỗi định dạng