Oracle
 sql >> база данни >  >> RDS >> Oracle

Изпълнение на динамична Sql заявка в Oracle

Динамиката Низът трябва да бъде ограден в 'Единични кавички'

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

EXECUTE IMMEDIATE позволява многоредов резултат, ако използвате BULK COLLECT

Пример:

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 използвайки свързващи променливи;

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

  2. Зареждане на данни от *.xlsx или *.xls в таблица на Oracle от потребителски акаунт на Oracle Apex 4.0.2

  3. Има ли начин за подобряване на MERGE заявка?

  4. Какво е името на ограничението по подразбиране в Oracle?

  5. Как да анализирам varchar2 и да го направя в множество редове?