Hi,
>> I have searched thoroughly various forums and site and I think the mistake I am making in my code is not using Bind Variable.
Your BIG mistake is not formsatting thsi mess for readability!
PLEASE READ THIS!
http://www.dba-oracle.com/t_sql_statements_formatting.htmI always put
select,
from and
where alone on separate lines, and indent threee spaces.
As written Albert Eienstein could not figure-out your code!
CODE
CREATE OR REPLACE PROCEDURE
CUBE_VIEW (VAR_DT IN VARCHAR2 DEFAULT '')
AUTHID CURRENT_USER
AS
START_DATE NUMBER;
END_DATE NUMBER;
VAR DATE;
BEGIN
declare cursor c1 as
SELECT
TO_NUMBER(
TO_CHAR(
TRUNC(
TRUNC(
TO_DATE(
(SELECT
ADD_MONTHS(
(SELECT TO_DATE(VAR,'DD-MON-YY') +
(6-TO_NUMBER(TO_CHAR(TO_DATE(VAR,'DD-MON-YY')+1,'D')))
FROM
DUAL),-34) FROM DUAL),'DD-MON-YY'),'MM')-1,'MM'),'YYMMDD')) INTO START_DATE FROM DUAL;
create cursor c2 as
SELECT
TO_NUMBER(TO_CHAR(TRUNC(TRUNC(TO_DATE((SELECT ADD_MONTHS((SELECT TO_DATE(VAR,'DD-MON-YY') + (6-TO_NUMBER(TO_CHAR(TO_DATE(VAR,'DD-MON-YY')+1,'D'))) FROM DUAL),-1) FROM DUAL),'DD-MON-YY'),'MM')-1,'MM'),'YYMMDD')) INTO END_DATE FROM DUAL;
DBMS_OUTPUT.PUT_LINE('START DATE IS ' || START_DATE);
DBMS_OUTPUT.PUT_LINE('END DATE IS ' || END_DATE);
--EXECUTE IMMEDIATE 'CREATE OR REPLACE VIEW F_SURVEY_YESTERDAY AS SELECT * FROM F_SURVEY_MULTICOL WHERE FLIGHTDATE BETWEEN 090300 AND 111201';
EXECUTE IMMEDIATE 'CREATE OR REPLACE VIEW RESPONSE_YESTERDAY AS SELECT * FROM RESPONSE_SMALL WHERE FLIGHTDATE BETWEEN START_DATE AND END_DATE';
END CUBE_VIEW;
IF VAR_DT IS NULL THEN
VAR:= SYSDATE;
ELSE
VAR:= TO_DATE(VAR_DT);
END IF;