CREATE TABLE test ( pubdate DATE, compdate DATE, valuecol NUMBER(5)); INSERT INTO test VALUES (TRUNC(SYSDATE), TRUNC(SYSDATE+300), 1); INSERT INTO test VALUES (TRUNC(SYSDATE-300), TRUNC(SYSDATE), 9); COMMIT; SELECT * FROM test; CREATE OR REPLACE PROCEDURE testproc ( StartDate DATE, EndDate DATE, DateType IN VARCHAR2) IS i PLS_INTEGER; BEGIN SELECT valuecol INTO i FROM test WHERE DECODE(DateType, 'AA',compdate, 'BB', pubdate, compdate) <= EndDate AND DECODE(DateType, 'AA', compdate, 'BB', pubdate, compdate) >= StartDate; dbms_output.put_line(TO_CHAR(i)); END testproc; / set serveroutput on exec testproc(TRUNC(SYSDATE), TRUNC(SYSDATE), 'BB');