Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

The reference to the table, view or sequence is not allowed in this context

EZGmsJun 9 2011 — edited Jun 9 2011
Hi,

I'm triying to execute the SP that I describe below and the OS give me an error:
CREATE OR REPLACE PROCEDURE DWARE.P_CSCV_AGR_MONTH_REVENUE
(
    TBL_NAME VARCHAR2,
    START_DATE DATE,
    RESULT_ OUT NUMBER
  ) AS
  BEGIN
  
  DECLARE 
  
    v_tbl_name VARCHAR2(30);
    v_start_date DATE;
    v_result NUMBER := 0;
    
    v_select_aux VARCHAR2(32767) := ' ';
    v_temp_table VARCHAR2(30);
    v_exists NUMBER;

  BEGIN
    v_tbl_name := TBL_NAME;
    v_start_date := START_DATE;
  
    v_temp_table := 'temp_' || v_tbl_name;
    
    SELECT count(*) INTO v_exists FROM tab WHERE lower(tname) = lower(v_temp_table);
    IF (v_exists = 1) THEN
      v_select_aux := '
        DROP TABLE ' || v_temp_table || ' CASCADE CONSTRAINTS PURGE
      ';
      EXECUTE IMMEDIATE (v_select_aux);
      COMMIT;
    END IF;
    
    v_select_aux := 'CREATE TABLE ' || v_temp_table || ' AS 
                              SELECT ch.date_ month_revenue,
                                   s.date_sub month_sub,
                                   s.codpromoter,
                                   u.OPERATOR,
                                   SUM (ch.total) AS TOTAL_OK
                                   FROM cscv_sub_charges_' || to_char(v_start_date, 'YYYY_MM')|| ' ch
                                   INNER JOIN cscv_subs s
                                   ON ch.id_sub = s.ID
                                   INNER JOIN cscv_users u
                                   ON s.id_user    = u.ID
                            WHERE ch.STATUS = 0
                            GROUP BY ch.date_, s.date_sub, s.codpromoter, u.OPERATOR';
                            
    EXECUTE IMMEDIATE (v_select_aux);
    COMMIT;  
     v_select_aux := '
 INSERT INTO ' || v_tbl_name || ' (
         month_revenue,
         month_sub,
         codpromoter,
         operator,
         TOTAL_0,
         TOTAL_1,
         TOTAL_2,
         TOTAL_3,
         TOTAL_4,
         TOTAL_5,
         TOTAL_6,
         TOTAL_7,
         TOTAL_8,
         TOTAL_9,
         TOTAL_10,
         TOTAL_11
      )
        SELECT 
         month_revenue,
         month_sub,
         codpromoter,
         operator,
         TOTAL_0,
         TOTAL_1,
         TOTAL_2,
         TOTAL_3,
         TOTAL_4,
         TOTAL_5,
         TOTAL_6,
         TOTAL_7,
         TOTAL_8,
         TOTAL_9,
         TOTAL_10,
         TOTAL_11
        FROM 
        (
           SELECT 
              month_revenue,
              month_sub,
              codpromoter,
              operator,
              sum(total_ok) total_0,
              0 total_1,
              0 total_2,
              0 total_3,
              0 total_4,
              0 total_5,
              0 total_6,
              0 total_7,
              0 total_8,
              0 total_9,
              0 total_10,
              0 total_11
             FROM '|| v_temp_table ||'
          WHERE to_char(month_sub,''mm/yyyy'') = to_char(sysdate,''mm/yyyy'')
          GROUP BY month_revenue,month_sub,codpromoter, operator
          UNION ALL
          SELECT 
              month_revenue,
              month_sub,
              codpromoter,
              operator,
              0,
              sum(total_ok),
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0
             FROM '|| v_temp_table ||'
          WHERE to_char(month_sub,''mm/yyyy'') = to_char((to_date(sysdate,''dd/mm/yy'') - INTERVAL ''1'' MONTH),''mm/yyyy'')
          GROUP BY month_revenue,month_sub,codpromoter, operator
          ) 
        GROUP BY month_revenue,
         month_sub,
         codpromoter,
         operator
           ';    
    
    EXECUTE IMMEDIATE (v_select_aux);
    v_result := v_result + SQL%ROWCOUNT;
    COMMIT;
    
    v_select_aux := '
      DROP TABLE ' || v_temp_table || ' CASCADE CONSTRAINTS PURGE
    ';
    EXECUTE IMMEDIATE (v_select_aux);
    COMMIT;
    
    RESULT_ := v_result;
  END;
  END P_CSCV_AGR_MONTH_REVENUE;
/
------------------------------
BEGIN
DWARE.P_CSCV_AGR_MONTH_REVENUE(CSCV_AGR_MONTH_REVENUE,'01/01/2010');
END;
/
and the output is:
Error at line 1
ORA-06550: líne 2, column 32:
PLS-00357: The reference to the table, view or sequence 'CSCV_AGR_MONTH_REVENUE'  is not allowed in this context
ORA-06550: líne 2, column 1:
PL/SQL: Statement ignored
what could I do to resove the problem??

Thanks in advance...
This post has been answered by Vivek L on Jun 9 2011
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jul 7 2011
Added on Jun 9 2011
6 comments
90 views