Oracle - PL/SQL - PLS-00103: Encountered the symbol "CURSOR" when expecting one of the following

 
Vista:
Imágen de perfil de Jorman

PL/SQL - PLS-00103: Encountered the symbol "CURSOR" when expecting one of the following

Publicado por Jorman (1 intervención) el 21/08/2013 16:12:41
Buenas, saludos desde Venezuela,

Estoy iniciándome en plsql y estoy creando un pequeño proceso para extraer una data, mis dudas son muchas y quisiera pedir su colaboración en ver que esta mal del codigo o en la lógica ya que no conozco mucho, les envio el codigo ya que al intentar ejecutarlo me indica este error:

ORA-06550: line 34, column 5:
PLS-00103: Encountered the symbol "CURSOR" when expecting one of the following:

Aqui esta el codigo:


DECLARE
-- Rq. 26971

l_linea VARCHAR2 (800);
l_file_salida UTL_FILE.file_type;
l_file_salida2 UTL_FILE.file_type;
l_directory_salida VARCHAR2 (50);
l_filename_salida VARCHAR2 (50);
l_filename_salida2 VARCHAR2 (50);
l_abe PS_BO_ABE_DTL.ABE_SEQ%TYPE;
l_rbtacctid PS_CTV_INS_SERVICI.RBTACCTID%TYPE;
l_rbtacctid_2 PS_RBT_ACCOUNT.RBTACCTID%TYPE;
l_rbtphonenumber PS_CTV_INS_SERVICI.RBTPHONENUMBER%TYPE;
l_bo_id PS_RBT_ACCOUNT.BO_ID%TYPE;
l_role_type_id_cust PS_RBT_ACCOUNT.ROLE_TYPE_ID_CUST%TYPE;
l_cust_id PS_BC.CUST_ID%TYPE;
l_bo_name PS_BO_NAME.BO_NAME%TYPE;
l_phone PS_BO_CI_PHONE_VW.PHONE%TYPE;
l_cm_purpose_type_id PS_BO_CI_PHONE_VW.CM_PURPOSE_TYPE_ID%TYPE;
l_rbtacctid_em PS_CTV_RBT_ACCOUNT.RBTACCTID%TYPE;
l_profile PS_BO_CM.PROFILE_CM_SEQ%TYPE;
l_abe PS_BO_ABE_DTL.ABE_SEQ%TYPE;
l_ctv_categoria PS_CTV_RBT_ACCOUNT.CTV_CATEGORIA%TYPE;
l_phone VARCHAR2(30);
l_fecha VARCHAR2(50);
l_org VARCHAR2(4):='CAPT';
l_clase VARCHAR2(4):='CAPT';
l_central VARCHAR:='NULL'

--


--ID_CUENTAS-TELEFONO CLIENTES MM-EM
CURSOR c1
IS
SELECT DISTINCT a.rbtacctid, a.rbtphonenumber
FROM ps_ctv_ins_servici a
WHERE a.role_type_id_cust IN ('2','9')
AND a.ctv_inst_act = '1'
AND a.ctv_tipo_inst = 'PO'
AND a.rbtphonenumber LIKE '2%'
AND a.rbtacctid BETWEEN '1003000002' AND '1003000009'
ORDER BY a.rbtacctid;



--BO_ID CLIENTES MM-EM
CURSOR c2
IS
SELECT DISTINCT rbtacctid, bo_id, role_type_id_cust
FROM ps_rbt_account
WHERE rbtacctstatus = 'ACT'
AND rbtaccttype = 'IND'
AND rbtbillsysacctid = l_rbtacctid;


--ID CLIENTE
CURSOR c3
IS
SELECT a.cust_id
FROM ps_bc a
WHERE a.bo_id = l_bo_id
and a.do_not_call <> 'Y';



--CUENTAS CLIENTES EMPRESAS
CURSOR c4
IS
SELECT DISTINCT rbtacctid
FROM ps_ctv_rbt_account
WHERE ctv_categoria in ('MAHO','PYJT','PYVC','PYGO')
and rbtacctid=l_rbtacctid_2;



--PROFILE PRINCIPAL
CURSOR c5
IS
SELECT a.profile_cm_seq
FROM ps_bo_cm a, ps_bo_cm_use b, ps_cm c
WHERE a.profile_cm_seq = b.profile_cm_seq
AND a.cm_id = c.cm_id
AND a.bo_cm_start_dt <= SYSDATE
AND a.bo_cm_end_dt >= SYSDATE
AND a.cm_type_id = 1
AND b.cm_use_start_dt <= SYSDATE
AND b.cm_use_end_dt >= SYSDATE
AND b.primary_ind = 'Y'
AND a.bo_id = l_bo_id
AND b.role_type_id IN ('2','9');


--ABE_SEQ_PRINCIPAL
CURSOR c6
IS
SELECT abe_seq
FROM ps_bo_abe_dtl
WHERE bo_id = l_bo_id
AND profile_cm_seq = l_profile;



--TELEFONOS
CURSOR c7
IS
SELECT DISTINCT a.phone,a.cm_purpose_type_id
FROM ps_bo_ci_phone_vw a
WHERE a.bo_id = l_bo_id
AND a.profile_cm_seq IN (
SELECT b.profile_cm_seq
FROM ps_bo_abe_dtl b
WHERE b.bo_id = l_bo_id
AND b.abe_seq = l_abe);

--NOMBRE
CURSOR c8
IS
SELECT a.bo_name
FROM ps_bo_name a
WHERE a.bo_id = l_rbtcust_bo_id
AND primary_ind = 'Y';



--FECHA Y HORA
CURSOR c9 is
select to_char(sysdate,'yyyymmdd_hhmmss') from dual;



BEGIN
l_directory_salida := 'SALIDA_LISTO';

OPEN c9;
FETCH c9 INTO l_fecha;
CLOSE c9;

l_filename_salida := 'CONTACTO_MM_CRM_NAP_'||l_fecha||'.txt';
l_filename_salida2 :='CONTACTO_EM_CRM_NAP_'||l_fecha||'.txt';
l_file_salida := UTL_FILE.fopen (l_directory_salida, l_filename_salida, 'W');
l_file_salida2 := UTL_FILE.fopen (l_directory_salida, l_filename_salida2, 'W');

UTL_FILE.put_line (l_file_salida, 'Inicio proceso');

UTL_FILE.put_line (l_file_salida,'ORGANIZACION' || '|' || 'ID_CLIENTE' || '|' || 'NOMBRE' || '|' || 'TELEFONO' || '|'|| 'CLASE' || '|' || 'CENTRAL');

l_bo_name := '';
l_rbtbillsysacctid := '';
l_rbtphonenumber := '';
l_bo_id:= '';
l_role_type_id_cust:= '';
l_rbtphonenumber:= '';
l_rbtacctid:= '';
l_rbtacctid_2:= '';
l_profile:= '';
l_abe:= '';
l_phone:= '';
l_cm_purpose_type_id:= '';
l_cust_id:= '';
l_ctv_categoria:= '';

--
FOR reg IN c1
LOOP

l_rbtacctid:= reg.rbtacctid;
l_rbtphonenumber:= reg.rbtphonenumber;

IF l_rbtacctid IS NOT NULL
THEN
--

FOR reg_1 IN c2
LOOP

l_rbtacctid_2:= reg_1.rbtacctid;
l_bo_id:=reg_1.bo_id;
l_role_type_id_cust:= reg_1.role_type_id_cust;


IF l_role_type_id_cust= '2'
THEN
utl_file.put_line(l_file_salida,l_org ||';'|| l_cust_id ||';'|| l_bo_name ||';'|| l_phone ||';'|| l_clase ||';'|| l_central);
ELSIF l_role_type_id_cust= '9'
THEN
utl_file.put_line(l_file_salida2,l_org ||';'|| l_cust_id ||';'|| l_bo_name ||';'|| l_phone ||';'|| l_clase ||';'|| l_central);
END IF;

IF l_bo_id > 0
THEN
--DBMS_OUTPUT.put_line (l_bo_id);

--
OPEN c3;
FETCH c3 INTO l_cust_id;
CLOSE c3;

IF l_cust_id IS NOT NULL
THEN

--
OPEN c4;
FETCH c4 INTO l_cuenta;
CLOSE c4;

IF l_cuenta IS NOT NULL
THEN

--
OPEN c5;
FETCH c5 INTO l_profile;
CLOSE c5;

--
OPEN c6;
FETCH c6 INTO l_abe;
CLOSE c6;


--
FOR reg_2 IN c7
LOOP

l_phone:= reg_2.phone;
l_cm_purpose_type_id:= reg_2.cm_purpose_type_id;

IF l_cm_purpose_type_id= 12
THEN
utl_file.put_line(l_file_salida,l_org ||';'|| l_cust_id ||';'|| l_bo_name ||';'|| l_phone ||';'|| l_clase ||';'|| l_central);

ELSIF l_phone LIKE '042%' OR '041%' OR '42%' OR '41%'
THEN
utl_file.put_line(l_file_salida,l_org ||';'|| l_cust_id ||';'|| l_bo_name ||';'|| l_phone ||';'|| l_clase ||';'|| l_central);
END IF;

END LOOP;

UTL_FILE.put_line (l_file_salida, l_org ||';'|| l_cust_id ||';'|| l_bo_name ||';'|| l_phone ||';'|| l_clase ||';'|| l_central);

--
END IF;

END IF;

END IF;

END LOOP;

END IF;

END LOOP;

--
UTL_FILE.put_line (l_file_salida,'Fin proceso');
UTL_FILE.put_line (l_file_salida2,'Fin proceso');
UTL_FILE.fclose (l_file_salida);
UTL_FILE.fclose (l_file_salida2);
--
END;



Gracias...................
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

PL/SQL - PLS-00103: Encountered the symbol "CURSOR" when expecting one of the following

Publicado por ulises (39 intervenciones) el 21/08/2013 23:08:41
Al final de la declaracion de la varial l_Central hace falta PUNTO Y COMO (;)

l_Central VARCHAR := 'NULL' ; --<===
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

PL/SQL - PLS-00103: Encountered the symbol "CURSOR" when expecting one of the following

Publicado por luis pablo (235 intervenciones) el 25/08/2013 04:00:12
Si la BD oracle te está diciendo el error: "ORA-06550: line 34, column 5"

No entiendo cual es la duda??? Te da flojera leer el mensaje o revisar la línea de tu error??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

<font><font>PL / SQL - PLS-00103: se encontró con el símbolo "CURSOR" cuando se es

Publicado por Richie (16 intervenciones) el 26/08/2013 14:57:47
Buenas, un saludo viejo tambien desde Vzla,te recomiendo que trates de dar con el error tu mismo para que te familiarices y asi mas adelante puedas encontrar los errores mas rapido te lo digo por experiencia, un consejo normalmento cuando te detallan el error que te dice la linea y la columna, puede estar el error antes de esa linea o columna...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar