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...