Procedures, Packages y Oracle PL/SQL
- Inicie sesión o regístrese para enviar comentarios
Saludos
Estoy comenzando en estos de las Base de Datos de Oracle mi problematica es la siguiente:
He creado el siguiente procedimiento a travez de Enterprise Manager (Consulta):
CREATE OR REPLACE PROCEDURE ver_orden(ordenv number)
is
v_output_file1 utl_file.file_type;
orden Varchar2 (10);
cliente Varchar2 (10);
Referencia Varchar2 (10);
begin
v_output_file1 := utl_file.fopen('TEST_DIR', 'miguel.txt', 'W'); v_output_file1 := utl_file.fopen ('test_dir', 'miguel.txt', 'W');
select t$orno, t$cuno ,t$refe into orden, cliente, referencia from ttdsls928100 where orden=ordenv;
DBMS_OUTPUT.PUT_LINE('Orden:'||orden|| 'Cliente:' ||Cliente|| 'Referencia' ||referencia);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('No hemos encontrado ordenes');
utl_file.fclose_all; utl_file.fclose_all;
end;
Cuando lo compilo me indica que no tiene errores.
Luego en el Oracle Scheduler > Trabajos
Creo un trabajo para ejecutar llamando este procedimiento:
begin;
execute ver_orden('25030');
end;
Cuando ejecuto el trabajo me da un error:
ORA-06550: línea 1, columna 728: PLS-00103: Encountered the symbol ";" when expecting one of the following: (begin case declare exit for goto if loop mod null pragma raise return select update while with <an identifier> <a double-quoted delimited-identifier> <a bind variable> << continue close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe purge
Y no entiendo este error, por lo que espero sus comentarios para ver en que estoy fallando, si estoy haciendo algo incorrecto.
Atentamente
pro_miguel
Hola Miguel,
Simplemente te sobra el ; después del begin cuando declaras el trabajo en el scheduler.
Salud!
Antonio
Saludos
Gracias por tu ayuda. es que esto es nuevo para nosotros que estamos trabajando desde hace 6 meses con oracle. y estamos realizando pruebas para definir todas nuestras tareas a traves del Oracle Scheduler y no por el crontab.