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.

Ejecución de script TIB de gran tamaño

Me he encontrado con un problema en el que IB_Script devuelve un error al ejecutar un script más largo:

Código de error de SQL = -104
Fin inesperado del comando – línea 18, columna 52

Mientras el número de caracteres en el script no superaba los 65.536 caracteres (actualmente es 66.186), no se producía ese mensaje de error.

He subido IB_Script con el siguiente código:

with dm.DDLScript do
    begin
        try
            SQL.Clear;
            SQL.Add('SET TERM ^;');
            SQL.Add(Format('CREATE OR ALTER PACKAGE %s',[ObjectName]));
            SQL.Add('AS');
            SQL.AddStrings(hdr.Lines); // hdr > TSynEdit

            Execute;
            SQL.Clear;

            SQL.Add('SET TERM ^;');
            SQL.Add(Format('RECREATE PACKAGE BODY %s',[ObjectName]));
            SQL.Add('AS');
            SQL.AddStrings(bdy.Lines); // bdy > TSynEdit
            SQL.Add('^');
            Execute;

            ObjectMod := false;
        except
            on e:exception do
            begin
                messageDlg(e.Message, mtError,[mbOk], 0);
                abort;
            end;
        end;
    end;

¿Alguien ha encontrado un problema similar? No es posible ejecutar el script con un número menor de caracteres, ya que se trataría de un PACKAGE BODY como el mostrado.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Basándose en el mensaje de error proporcionado, parece que el script de SQL no está completo y termina abruptamente en la línea 18, columna 52. Esto podría ser debido a varias razones, como un error de sintaxis o una limitación en el tamaño del script de SQL que se puede ejecutar.

    Una posible razón para el error podría ser la longitud del script de SQL. Como se menciona, el error ocurre cuando el número de caracteres en el script supera los 65,536 caracteres. Podría ser posible dividir el script en partes más pequeñas y ejecutarlas por separado en lugar de ejecutar todo el script de una vez.

    Otra posible razón para el error podría ser un error de sintaxis en el script, como un punto y coma faltante o paréntesis que hacen que el script termine prematuramente. En tales casos, es importante revisar el script en busca de errores de sintaxis y realizar las correcciones necesarias.

    Finalmente, podría haber limitaciones en el tamaño de la memoria del servidor de la base de datos o en la configuración que impiden la ejecución de scripts de SQL grandes. En tales casos, puede ser necesario optimizar la configuración del servidor de la base de datos o actualizarse a un servidor más potente que pueda manejar scripts de SQL más grandes.

Comments are closed.