Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Ejecutar fichero .sql

Estas en el tema de Ejecutar fichero .sql en el foro de Oracle en Foros del Web. Muy buenas tardes a todos, Por más que he repasado apuntes, y buscado información, no he conseguido ejecturar ficheros .sql desde Sql*Plus, algo que parece ...
  #1 (permalink)  
Antiguo 09/01/2010, 07:02
 
Fecha de Ingreso: junio-2008
Mensajes: 32
Antigüedad: 16 años, 5 meses
Puntos: 0
Ejecutar fichero .sql

Muy buenas tardes a todos,
Por más que he repasado apuntes, y buscado información, no he conseguido ejecturar ficheros .sql desde Sql*Plus, algo que parece tan simple...
les comento por ejemplo un ejercicio.

Creo una función tal que:
CREATE OR REPLACE FUNCTION validar_deptno (n_deptno in dept.deptno%TYPE) RETURN BOOLEAN IS
n char;
BEGIN
SELECT 'N' INTO n FROM DEPT WHERE DEPTNO=n_deptno;
RETURN (TRUE);
EXCEPTION
WHEN NO_DATA_FOUND THEN RETURN (FALSE);
END validar_deptno;
/

La pruebo con el procedimiento:
CREATE OR REPLACE PROCEDURE nuevo_empleado (num emp.empno%TYPE, nombre emp.ename%TYPE,depart emp.deptno%TYPE) IS
total NUMBER(1);
num_error NUMBER:=0;
nom_error CHAR(100);
BEGIN
select count(*) into total from emp where empno=num;
If validar_deptno(depart) then
If total>0 then
DBMS_OUTPUT.PUT_LINE('No se ha podido insertar clave duplicada');
else
DBMS_OUTPUT.PUT_LINE('Se ha insertado una fila');
INSERT INTO EMP (EMPNO,ENAME,DEPTNO) VALUES (num,nombre,depart);
End if;
else
DBMS_OUTPUT.PUT_LINE('Departamento InvAlido');
END IF;
EXCEPTION
WHEN OTHERS THEN
num_error:=SQLCODE;
nom_error:=SUBSTR(SQLERRM,1,100);
DBMS_OUTPUT.PUT_LINE('ERROR: '||num_error||' - ' ||nom_error);
END nuevo_empleado;
/

Veo que funciona.Guardo la función en el bloc de notas con extensión .sql en C:\.
Voy a Sql*plus:

SQL> START C:\FVALIDAR_DEPT.SQL;
SP2-0734: inicio "´╗┐CREATE ..." de comando desconocido - resto de la lÝnea igno
rado.
SP2-0042: comando desconocido "n char" - resto de la lÝnea ignorado.
SELECT 'N' INTO n FROM DEPT WHERE DEPTNO=n_deptno;
*
ERROR en lÝnea 2:
ORA-06550: lÝnea 2, columna 42:
PL/SQL: ORA-00904: "N_DEPTNO": identificador no vßlido
ORA-06550: lÝnea 2, columna 1:
PL/SQL: SQL Statement ignored
ORA-06550: lÝnea 3, columna 1:
PLS-00372: En un procedimiento, la sentencia RETURN no puede contener ninguna
expresi¾n
ORA-06550: lÝnea 3, columna 1:
PL/SQL: Statement ignored
ORA-06550: lÝnea 5, columna 25:
PLS-00372: En un procedimiento, la sentencia RETURN no puede contener ninguna
expresi¾n
ORA-06550: lÝnea 5, columna 25:
PL/SQL: Statement ignored

Y el caso, es que he probado con múltiples ejercicios, pero siempre lo mismo, ya en la primera sentencia eme da errores....
¿Saben que puedo estar haciendo mal?
Muchas gracias una vez mas por vuestra atención. La verdad es que como ven Oracle me supera... pero vamos, por ganasde superarle yo a ella no será...
Un saludo
  #2 (permalink)  
Antiguo 28/01/2010, 09:20
 
Fecha de Ingreso: noviembre-2009
Mensajes: 4
Antigüedad: 15 años
Puntos: 0
Respuesta: Ejecutar fichero .sql

Hola!

Te comento que compile los store que aparecen en el mensaje y no tuve ningun problema, tal vez tenga que ver con algun problema de formatos y el sqlplus no te lo este levantando como corresponda

Para ejecutar sobre sqlplus deberías poner lo siguiente

sqlplus usuario/contraseña @archivo.sql

Espero que te haya sido de ayuda
Saludos
  #3 (permalink)  
Antiguo 28/01/2010, 14:57
 
Fecha de Ingreso: octubre-2007
Mensajes: 18
Antigüedad: 17 años
Puntos: 0
Respuesta: Ejecutar fichero .sql

Buenas noches ante todo, Sherezade81, por que no usas sqlDeveloper, una herramienta gratuita que oracle tiene en su página????

Aquí te dejo el enlace por si le quieres echar un vistazo:

www.oracle.com/technology/products/database/sql_developer/index.html
  #4 (permalink)  
Antiguo 28/01/2010, 17:20
Avatar de hackvan  
Fecha de Ingreso: mayo-2008
Mensajes: 4
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: Ejecutar fichero .sql

+1 con la recomendación de @bogeyboy de utilizar el SQLDeveloper, es muy practico para probar y hacer scripts en PL/SQL.

aun así puedes probar los scripts desde el SQL*Plus, despues de conectarte a una instancia (con un usuario que tenga permisos de crear funciones y procedimientos) de la BD colocas:

sql> @"ruta\del\archivo.sql"

y listo, suerte.

Etiquetas: ejecutar, fichero, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:28.