es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

PLS-00103: Encontrado el símbolo en DBMS_SCHEDULER.

Llamar al paquete dentro del trabajo genera un informe de error:

ORA-06550: línea 8, columna 5:
PLS-00103: Encontrado el símbolo “”
);
end; :AUXSQLDBIND4: = SqlDevBind1Z_1; :AUXSQLDBIND3: = SqlDevBind1Z_2; :AUXSQLDBIND2: = SqlDevBind1Z_3; :AUXSQLDBIND1: = SqlDevBind ”

Ayuda a llamar al paquete con la variable pasada work_date para un cálculo específico para cada día del mes.

¡Gracias de antemano por tu ayuda!

“`
DBMS_SCHEDULER.create_job (
job_name => ‘J_ACCOUNT_TURNOVER’,
job_type => ‘PLSQL_BLOCK’,
start_date => SYSTIMESTAMP, enabled => TRUE,
job_action =>
‘declare
start_date number;
end_date number;
work_date date;
begin
start_date := to_number(to_char(to_date(‘2018-01-01’, ‘yyyy-MM-dd’), ‘j’));
end_date := to_number(to_char(to_date(‘2018-01-31’, ‘yyyy-MM-dd’), ‘j’));
for curr in start_date..end_date loop
work_date := to_char(to_date(curr, ‘j’), ‘yyyyMMdd’);
dma.fill_account_turnover_f.fill(work_date);
end loop;
end;’
);
end;

Tags:  ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que hay un error de sintaxis en el bloque PL/SQL que está siendo ejecutado por el trabajo. Específicamente, el error ocurre en la línea 8, columna 5, donde hay un símbolo que no es reconocido por el compilador.

    Una posible causa del error podría ser el uso de un símbolo de ampersand (&) sin escapar en el bloque PL/SQL. Si el ampersand no es escapado correctamente, PL/SQL lo interpretará como el inicio de una variable de sustitución, lo cual podría llevar a errores inesperados.

    Para llamar al paquete con la variable pasada work_date, debes modificar el parámetro job_action de la función create_job para incluir la llamada apropiada al paquete, reemplazando el código existente con el siguiente:

    declare
      start_date number;
      end_date number;
      work_date date;
    begin
      start_date := to_number(to_char(to_date('2018-01-01', 'yyyy-MM-dd'), 'j'));
      end_date := to_number(to_char(to_date('2018-01-31', 'yyyy-MM-dd'), 'j'));
      for cur_r in start_date..end_date loop
        work_date := to_date(cur_r, 'j');
        dma.fill_account_turnover_f.fill(work_date);
      end loop;
    end;
    

    Este código actualizado declara una variable llamada work_date, la cual es utilizada para pasar el valor de fecha a la función fill del paquete dma.fill_account_turnover_f. El bucle for itera sobre el rango de fechas para el mes de enero de 2018, llamando a la función fill para cada día.

    Asegúrate de probar el código actualizado a fondo para asegurarte de que se ejecute sin errores y produzca los resultados esperados.

Comments are closed.