Por favor necesito hacer un cursor en ORACLE pero que referencie a otros cursores.


Lo he intentado declarando el primer cursor , luego declarando el segundo cursor, y luego el tercer cursor que hace el select a los dos primeros cursores, pero al momento de correr el archivo .sql me sale error como si no reconociera los cursores que referencio.

/*
Este codigo declara 2 cursores luego los abre y despues abre un tercer cursor con los
datos del primer y segundo cursor.
*/

DECLARE

V_COD S_ASSET.OWNER_ACCNT_ID%TYPE;
V_APE S_ORG_EXT.NAME%TYPE;
V_DOC S_ORG_EXT.LOC%TYPE;
V_EMP S_ORG_EXT.BU_ID%TYPE;
V_CONT1 NUMBER := 0;
V_CONT2 NUMBER := 0;

TYPE t_resulrecord IS RECORD (
XID S_ASSET.OWNER_ACCNT_ID%TYPE,
APE S_ORG_EXT.NAME%TYPE,
DOC S_ORG_EXT.LOC%TYPE,
EMP S_ORG_EXT.BU_ID%TYPE,
CO1 NUMBER,
CO2 NUMBER
);

TYPE t_resulcursor IS REF CURSOR RETURN t_resulrecord ;

v_cursor_resul t_resulcursor;

CURSOR C_1 IS
SELECT A.OWNER_ACCNT_ID,
COUNT(A.ASSET_COND_CD) CONT1,
B.NAME APELLIDO1,
B.LOC DOCUMENTO1,
B.BU_ID EMPRESA1
FROM S_ASSET A,
S_ORG_EXT B
WHERE A.OWNER_ACCNT_ID = B.ROW_ID AND
UPPER(TRIM(A.ASSET_COND_CD)) = 'NO CUALIFICADO'
GROUP BY A.OWNER_ACCNT_ID,
B.NAME,
B.LOC,
B.BU_ID;

CURSOR C_2 IS
SELECT OWNER_ACCNT_ID,
COUNT(ASSET_COND_CD) CONT2
FROM S_ASSET
GROUP BY OWNER_ACCNT_ID;

BEGIN
SET TRANSACTION USE ROLLBACK SEGMENT RBS_SIEBEL;
OPEN C_1;
OPEN C_2;

OPEN v_cursor_resul FOR
SELECT C_1.OWNER_ACCNT_ID CODIGO,
C_1.APELLIDO1 APELLIDO,
C_1.DOCUMENTO1 DOCUMENTO,
C_1.EMPRESA1 EMPRESA,
C_1.CONT1,
C_2.CONT2
FROM C_1,
C_2
WHERE C_1.OWNER_ACCNT_ID = C_2.OWNER_ACCNT_ID AND
C_1.CONT1 = C_2.CONT2;

LOOP
FETCH v_cursor_resul INTO V_COD,V_APE,V_DOC,V_EMP,V_CONT1,V_CONT2 ;
EXIT WHEN v_cursor_resul%NOTFOUND;


--UPDATE EIM_ACCOUNT
-- SET DIVN_CD = 'NO CUALIFICADO'
-- WHERE NAME = V_APE AND
-- LOC = V_DOC AND
-- ACCNT_BU = V_EMP;
END LOOP;
COMMIT;
CLOSE v_cursor_resul;
CLOSE C_2;
CLOSE C_1;
END;
/

FROM C_1,
*
ERROR en línea 57:
ORA-06550: línea 57, columna 9:
PLS-00201: el identificador 'C_1' debe declararse
ORA-06550: línea 51, columna 2:
PL/SQL: SQL Statement ignored
ORA-06550: línea 50, columna 7:
PLS-00320: la declaración del tipo de expresión es incompleta o con forma inadecuada
ORA-06550: línea 50, columna 2:
PL/SQL: SQL Statement ignored

[Edited by cvasquez on 11-22-2000 at 06:01 AM]