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

създаване на параметризирани изгледи в oracle11g

Методът на контекста е описан тук:http://docs.oracle.com/cd/B28359_01/network.111/b28531/app_context.htm

напр. (пример, адаптиран от горната връзка)

CREATE CONTEXT dates_ctx USING set_dates_ctx_pkg;

CREATE OR REPLACE PACKAGE set_dates_ctx_pkg IS 
  PROCEDURE set(d1 in date, d2 in date); 
END; 
/

CREATE OR REPLACE PACKAGE BODY set_dates_ctx_pkg IS
  PROCEDURE set(d1 in date, d2 in date) IS 
  BEGIN 
    DBMS_SESSION.SET_CONTEXT('dates_ctx', 'd1', TO_CHAR(d1,'DD-MON-YYYY'));
    DBMS_SESSION.SET_CONTEXT('dates_ctx', 'd2', TO_CHAR(d2,'DD-MON-YYYY'));
  END;
END;
/

След това задайте датите в приложението си с:

BEGIN set_dates_ctx_pkg.set(mydate1, mydate2); END;
/

След това потърсете параметрите с:

SELECT bla FROM mytable
WHERE mydate
  BETWEEN TO_DATE(
            SYS_CONTEXT('dates_ctx', 'd1')
          ,'DD-MON-YYYY')
      AND TO_DATE(
            SYS_CONTEXT('dates_ctx', 'd2')
          ,'DD-MON-YYYY');

Предимството на този подход е, че е много удобен за заявки; не включва DDL или DML по време на изпълнение и следователно няма транзакции, за които да се притеснявате; и е много бърз, защото не включва превключване на контекста SQL - PL/SQL.

Алтернативно:

Ако методът на контекста и методът на променливите на пакета на Джон не са възможни за вас, друг е да вмъкнете параметрите в таблица (например глобална временна таблица, ако изпълнявате заявката в същата сесия), след което да се присъедините към тази таблица от гледката. Недостатъкът е, че сега трябва да се уверите, че изпълнявате някакъв DML, за да вмъкнете параметрите, когато искате да изпълните заявката.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TEMPFILE Офлайн физическа готовност

  2. Функция ASIN() в Oracle

  3. Как да приложите пакетно извличане с Fluent NHibernate, когато работите с Oracle?

  4. Автоматично генериране на ключове в хибернация с MySQL и Oracle

  5. Oracle изберете най-новия запис за дата