Metode konteks dijelaskan di sini:http://docs.Oracle.com/cd/B28359_01/network.111/b28531/app_context.htm
misalnya (contoh diadaptasi dari tautan di atas)
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;
/
Kemudian, atur tanggal di aplikasi Anda dengan:
BEGIN set_dates_ctx_pkg.set(mydate1, mydate2); END;
/
Kemudian, kueri parameter dengan:
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');
Keuntungan dari pendekatan ini adalah sangat ramah permintaan; ini tidak melibatkan DDL atau DML saat runtime, dan oleh karena itu tidak ada transaksi yang perlu dikhawatirkan; dan ini sangat cepat karena tidak melibatkan SQL - sakelar konteks PL/SQL.
Atau:
Jika metode konteks dan metode variabel paket John tidak memungkinkan untuk Anda, metode lainnya adalah memasukkan parameter ke dalam tabel (mis. tabel sementara global, jika Anda menjalankan kueri di sesi yang sama), lalu gabung ke tabel itu dari tampilan. Kelemahannya adalah Anda sekarang harus memastikan bahwa Anda menjalankan beberapa DML untuk memasukkan parameter kapan pun Anda ingin menjalankan kueri.