Firebird Stored Procedure Generator

7 comentarios

Si te aburre escribir stored procedures y te gustaría automatizar esa tarea, puedes usar para ello un programa gratuito llamado Firebird Stored Procedure Generator, el cual puedes descargar desde:

http://www.sieradelta.com/Products/FBSPGen.aspx

Los comandos que puedes automatizar son:

  • INSERT
  • UPDATE
  • UPDATE OR INSERT
  • DELETE
  • SELECT
  • SELECT ALL
  • SELECT PAGE
  • COUNT

Cuando ejecutes al programa, después de descargarlo e instalarlo, verás una pantalla similar a la siguiente:

fspg01

Captura 1. Si haces clic en la imagen la verás más grande

Al hacer clic sobre el botón “Next”, verás la siguiente pantalla, en la cual deberás ingresar los datos de la Base de Datos con la cual deseas trabajar:

fspg02

Captura 2. Si haces clic en la imagen la verás más grande

Para asegurarte que has escrito bien los parámetros de conexión puedes hacer clic en el botón “Test Connection”. Si la conexión puede realizarse exitosamente, verás una pantalla similar a la siguiente:

fspg03

Captura 3. Si haces clic en la imagen la verás más grande

Si luego haces clic sobre el botón “Next”, verás una pantalla similar a la siguiente:

 

fspg04

Captura 4. Si haces clic en la imagen la verás más grande

Al hacer clic en el botón “Load Objects” le dirás que cargue todas las tablas de tu Base de Datos para que pueda luego utilizarlas en los stored procedures que te generará el programa.

fspg05

Captura 5. Si haces clic en la imagen la verás más grande

En este caso se seleccionó la tabla CUENTAS y por eso nos mostró todas las columnas de la tabla CUENTAS. El siguiente paso es seleccionar las columnas por las cuales se puede ordenar la tabla y seleccionar el generador (secuencia) que le corresponde a esta tabla.

fspg06

Captura 6. Si haces clic en la imagen la verás más grande

 El siguiente paso es decirle cuales son los prefijos que nos gustaría usar para nombrar al stored procedure, a sus variables, y a sus parámetros. Desde luego que podremos cambiarlos más adelante si no nos gustan.

fspg07

Captura 7. Si haces clic en la imagen la verás más grande

Luego, elegimos el tipo de stored procedure que queremos generar:

fspg08

Captura 8. Si haces clic en la imagen la verás más grande

Luego, si lo deseamos, podemos escribir los nombres de los usuarios y los nombres de los roles que tendrán permiso para ejecutar al stored procedure que estamos creando. Debemos escribir un usuario o un rol en cada línea:

fspg09

Captura 9. Si haces clic en la imagen la verás más grande

A continuación generaremos el stored procedure haciendo clic sobre el botón “Generate”.

fspg10

Captura 10. Si haces clic en la imagen la verás más grande

Si deseamos copiar el stored procedure en el portapapeles, hacemos clic sobre el botón “Copy”.

Si queremos guardar el stored procedure en un archivo de script, hacemos clic sobre el botón “Save”.

Finalmente, en la siguiente pantalla, si deseamos guardar la configuración para un uso futuro,  hacemos clic sobre el botón “Save”

fspg11

Captura 11. Si haces clic en la imagen la verás más grande

Conclusión:

Escribir stored procedures largos puede ser bastante tedioso. Gracias a este programa: Firebird Stored Procedure Generator podremos realizar esa tarea mucho más rápidamente y sin aburrirnos.

Artículos relacionados:

El índice del blog Firebird21

El foro del blog Firebird21

Anuncios

Error de arithmetic overflow, division by zero, or string truncation, en un SELECT

1 comentario

En ocasiones el contenido de una tabla puede dañarse. Por ejemplo, porque primero grabaste algunas filas con un character set y luego cambiaste el character set de la tabla, por otro que es incompatible.

En tales casos al hacerle un SELECT a esa tabla, podrías ver un mensaje de error como el siguiente:

"Arithmetic overflow or division by zero has occurred.
arithmetic exception numeric overflow or string truncation
cannot transliterate character between character sets"

 

¿Por qué podría ocurrir algo así?

Porque el Firebird no verifica que el nuevo character set sea compatible con el anterior y que todas las filas de la tabla puedan ser traducidas (transliteradas). Eso, porque la tabla puede ser muy grande, tener millones y millones de filas, y hacer esa comprobación podría demorar mucho tiempo. Entonces, es tu responsabilidad asegurarte de que lo que estás haciendo está bien, pero … a veces podrías equivocarte.

¿Qué hacer en este caso?

Una posibilidad es tratar de recuperar todas las filas posibles, aquellas filas que aún pueden ser leídas. Esto puede ser algo tedioso pero … hay que hacerlo.

Podríamos crear una tabla que tenga exactamente la misma estructura que la tabla original, pero vacía, sin datos. Sus datos los iremos insertando por partes.

Ejemplo:

El mensaje de error te aparece luego de mostrarte 782 filas al ejecutar el Listado 1.

Listado 1.

SELECT
   ALU_NOMBRE
FROM
   ALUMNOS

Entonces para ir insertando en nuestra tabla auxiliar por partes podríamos escribir algo como:.

Listado 2.

INSERT INTO ALUMNOS2
   (ALU_NOMBRE)
SELECT
   ALU_NOMBRE
FROM
   ALUMNOS
ROWS
   1 TO 782

Lo que hicimos fue crear una tabla llamada ALUMNOS2 que tiene exactamente la misma estructura que la tabla ALUMNOS y luego le insertamos todas las filas que sabemos que están bien.

Listado 3.

INSERT INTO ALUMNOS2
   (ALU_NOMBRE)
SELECT
   ALU_NOMBRE
FROM
   ALUMNOS
ROWS
   784 TO 99999999

Como sabemos que la fila 783 tiene un error entonces en el Listado 3. salteamos hasta esa fila y nuestro INSERT empezará en la fila 784. Si el SELECT del Listado 3. también nos muestra un mensaje de error entonces vamos cambiando la cantidad del SKIP a 785, 786, 787, etc., hasta que podamos realizar el INSERT exitosamente.

De esta manera, aunque no recuperaremos todas las filas de la tabla ALUMNOS, sí podremos recuperar todas las filas que no tenían problemas.

Artículos relacionados:

El índice del blog Firebird21

El foro del blog Firebird21