Duda con PL/SQL

neiclon

Estoy haciendo unos ejercicios de pl/sql. Los tengo todos hechos y funcionan pero tengo una duda con el último. Se usan procedimientos. Se que el código es correcto o al menos eso creo. El caso es que me da el error "encountered the symbol or when expecting begin function pragma procedure. Con cualquier ejercicio de procedure que lo intente(incluidos los de ejemplo) me da ese error

¿Sabe alguien decirme donde puede estar el error)

Muchas gracias

DECLARE OR REPLACE
PROCEDURE teclado (v_teclado varchar2)
AS
V_nom varchar2(30);

V_dir varchar2(50);
V_sueldo varchar2(8);
V_fecha date;
v_dep number(3);

BEGIN

Select dni,direccion,sueldo, fecha_n, departamento into v_dni, v_dir, v_sueldo, v_fecha, v_dep
from empleado
where dni=v_teclado;

dbms_output.put_line(v_nom||" "||v_dir||" "||v_sueldo||" "||v_fecha||" "||v_dep);
EXCEPTION

WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE(‘Nadie con ese dni’);

END teclado;

/

HeXaN

¿Qué usas para ejecutarlo?

No sé si es un error al copiarlo aquí pero es "REPLACE".

1 respuesta
neiclon

#2 Exacto si, al copiarlo lo he puesto mal pero el error me aparece tanto con remplace como replace o con lo que sea; con lo que vaya después del or.
Lo ejecuto por código mediante oracle.

1 respuesta
HeXaN

#3 Prueba con esto:

CREATE OR REPLACE PROCEDURE teclado (v_teclado empleado.dni%TYPE)
AS
	v_dir emple.direccion%TYPE;
	v_sueldo emple.sueldo%TYPE;
	v_fecha emple.fecha_n%TYPE;
	v_dep emple.departamento%TYPE;
BEGIN
	SELECT dni, direccion, sueldo, fecha_n, departamento INTO v_dni, v_dir, v_sueldo, v_fecha, v_dep FROM empleado WHERE dni=v_teclado;
	DBMS_OUTPUT.PUT_LINE(v_nom||" - "||v_dir||" - "||v_sueldo||" - "||v_fecha||" - "||v_dep);
	EXCEPTION
		WHEN NO_DATA_FOUND THEN
		DBMS_OUTPUT.PUT_LINE('Nadie con ese DNI');
END teclado;

Ejecútalo en el interactivo, no en la línea de comandos. De todas formas yo tambíen estoy empezando ahora con esto y no tengo mucha idea xD

1 respuesta
neiclon

#4 Ahora lo probaré. ¿Cómo se abre el interactivo? Es que la forma de instalar las cosas oracle es una basura. Me costó encontrar el run sql line y por más que abra iconos no se cual es el interactivo.

1 respuesta
HeXaN

#5 El que pone "Ir a la página inicial de la base de datos".

1 respuesta
neiclon

#6 Bueno, en primer lugar me funciona perfectamente tu código en modo texto. Al parecer, cambiando el "DECLARE" por el "CREATE"... quizá en los apuntes que tengo están mal.

Lo de "ir a la página inicial de la BD" no se en donde está. Yo instalé el oracle y luego ejecuto directamente el exe "run sql command line" y aparece directamente la terminal de comando.

1 respuesta
HeXaN

#7 Yo uso el "Oracle Database 10g Express Edition" y en el menú de inicio te crea ese acceso que te comento. Me alegro de que te funcione.

Sergeon

Es que declare es para bloques anónimos y create para functions y procedures, creo. Por otro lado yo siempre he visto "create or replace procedure teclado IS" (en vez de 'as' como habeís puesto vosotros).

Acabo de probar as y también me deja. ¿Alguien sabe si cambia algo o si da comletamente igual? (he probado sobre una db de oracle xe tb).

Usuarios habituales

  • Sergeon
  • HeXaN
  • neiclon