Ir al contenido


Foto

Número lineas procedimiento almacenado


  • Por favor identifícate para responder
4 respuestas en este tema

#1 maurixio5540

maurixio5540

    Member

  • Miembros
  • PipPip
  • 31 mensajes
  • LocationColombia

Escrito 26 junio 2014 - 09:58

Saludos, amigos foreros

Tengo la siguiente inquietud, es posible saber el numero de lineas que tiene un procedimiento almacenado en particular, mediante SQL.

Por ejemplo:

CREATE PROCEDURE ACTIVIDAD( ID INTEGER)
AS
DECLARE VARIABLE CODIGO INTEGER;
DECLARE VARIABLE ID_ORDEN INTEGER;
BEGIN
  FOR SELECT ORDEN.ID_ORDEN FROM ORDEN WHERE
  ORDEN.ID_ADMISION=:ID INTO :ID_ORDEN DO
  BEGIN
    SELECT DETALLE.ID_INSUMOS FROM DETALLE
    WHERE DETALLE.ID_ORDEN=:ID_ORDEN INTO :CODIGO;
      if (:CODIGO > 0) then
      BEGIN
        UPDATE ORDEN SET ORDEN.CODIGO=:CODIGO
        WHERE ORDEN.ID_ORDEN=:ID_ORDEN;
      END
    END
    SUSPEND;
END


Me retorne un 18, haciendo referencia al numero de lineas que tiene. Básicamente debo contar el numero de lineas que tiene cada procedimiento almacenado que posee mi base de datos.


  • 0

#2 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 26 junio 2014 - 10:41

Mmmmmm  ^o|, yo me iría por el "no, no es posible mediante una sentencia", lo que me llevaría a la siguiente pregunta: cuál es el objetivo de contar las líneas contenidas en un SP ?

Saludox ! :)
  • 0

#3 maurixio5540

maurixio5540

    Member

  • Miembros
  • PipPip
  • 31 mensajes
  • LocationColombia

Escrito 26 junio 2014 - 05:20

Gracias Fenareth, por tu interés. Con respecto a tu pregunta acerca del objetivo, simplemente es para llevar un control del tamaño que puedan tener los procedimientos almacenados, debido a que en algunas ocasiones se ha optado por dividir algunos procedimientos cuando tienen o llegan a un determinado numero de lineas.

Actualmente la base de datos que manejamos consta de 291 procedimientos almacenados y por ende la tarea es contar las lineas de cada uno de ellos. Es por eso que me surgió la inquietud de saber si se podría realizar por medio de una sentencia o algo parecido. 

Cualquier ayuda al respecto quedo altamente agradecido.
  • 0

#4 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 26 junio 2014 - 08:16

Por un momento entendí que por números de líneas te referías a la cantidad de registros que regresaba el SP.
Me parece que con cualquier utilitario externo, como FlameRobin o IBExpert puedes comprobar eso. Quizá no de forma tan directa, como una funcionabilidad propia o un botón que te lo de masticado. Si abres cada SP con el editor que incluyen esos aplicativos creo recordar (no puedo asegurarlo ya que lamentablemente no dispongo por el momento con un equipo en condiciones operativas) que muestra al costado los números de línea.
Ahora convengamos que si de contar las líneas basta con examinar el script de la metadata y fijarse en que posición comienza y termina cada uno y hacer una simple e inofensiva resta.

Ahora también está la posibilidad de hacer una aplicación propia que lo haga; si ya se que es cosa de prisas y tiempos pero si las aplicaciones no dan la talla, pos... por algo somos desarrolladores  ;) Hay veces que no queda otra que tirarse a la pileta estando medio llena y llenarla.

Saludos,
  • 0

#5 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 27 junio 2014 - 01:39

Puedes contar los caracteres de los procedures así, si lo necesitas por lineas tendrías que detectar char(10) y esas cosas , pero igual necesitas crearte una DLL con una función "CountLines" o algo así:


SELECT rdb$Procedure_name Nombre, CHAR_LENGTH(rdb$procedure_source) Caracteres
FROM rdb$procedures
WHERE rdb$system_flag IS NULL OR rdb$system_flag = 0
order by 2 desc

  • 0




IP.Board spam blocked by CleanTalk.