Tengo un bloque anónimo pl/sql con un procedimiento declarado dentro de él, así como un cursor. Si declaro el procedimiento antes del cursor, falla. ¿Existe un requisito de que los cursores sean declarados antes de los procedimientos?Orden de declaración en un bloque anónimo pl/sql
¿Qué otras reglas existen para el orden de declaración en un bloque pl/sql?
Esto funciona:
DECLARE
cursor cur is select 1 from dual;
procedure foo as begin null; end foo;
BEGIN
null;
END;
Esta falla con el error PLS-00103: Encountered the symbol "CURSOR" when expecting one of the following: begin function package pragma procedure form
DECLARE
procedure foo as begin null; end foo;
cursor cur is select 1 from dual;
BEGIN
null;
END;
La documentación de referencia es aquí http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28370/block.htm#i32791 No está muy claro, pero las "declaraciones de elementos" (por ejemplo, variables) están en la lista 1 y tiene que venir antes de "definiciones de procedimiento/función" wh Están en la lista 2. –
@Gary: ¡Excelente, gracias! –