none
Saber desde qué número de línea se llama a un procedimiento RRS feed

  • Pregunta

  • Hola!

    Estoy desarrollando un sistema de control de determinados productos. Tengo varios procedimientos almacenados que se llaman entre sí, y al final tras una serie de comprobaciones se insertan en una tabla de "Registros_procesados" o en una tabla de "Errores_a_procesar" estos errores son comprobaciones de lógica de negocio, no son errores en sí de la capa de datos.

    La cosa es que para hacer un seguimiento de posibles errores, lo que hago es en las tablas de "Registros_procesados" y "Errores_a_procesar" tengo un campo llamado [prc_origen], es la ristra de los procedimientos por los que pasa hasta hacer la inserción en una de las dos tablas. Hasta aquí todo perfecto, por cierto lo hago con: OBJECT_NAME(@@PROCID) y voy concatenando en una variable por todos los que pasa.

    Bien ahora mi idea es ir un paso más allá y no solo saber desde que procedimiento se ha generado la inserción en cualquiera de las dos tablas, si no que quiero saber tanto el procedimiento de origen como la línea del procedimiento de origen.

    ¿Conocéis si hay alguna manera de saber esto? Es decir, saber el número de línea dentro de la definición de un procedimiento desde el cual se ejecuta una instrucción (en el caso que os expongo es la inserción en las tablas "Registros_procesados" y "Errores_a_procesar")

    Ejemplo Definicion procedimiento:

    create procedure  prc_prueba...
    
    ...
    
    begin
    
    insert into Registros_procesados values (getdate(), concat(OBJECT_NAME(@@PROCID), ' ', nºLinea), 'Producto A') -- Si esto es la línea 22 de la definicion del prc_prueba, es lo que le quiero pasar como parametro a la inserción.
    
    insert into Registros_procesados values (getdate(), concat(OBJECT_NAME(@@PROCID), ' ', nºLinea), 'Producto A') -- Si esto es la línea 26 de la definicion del prc_prueba, es lo que le quiero pasar como parametro a la inserción.
    
    end


    Saludos y gracias de antemano.

    miércoles, 30 de mayo de 2018 7:40

Todas las respuestas

  • Me quedo a la espera de alguna respuesta porque tengo un problema similar.

    Un saludo.

    miércoles, 30 de mayo de 2018 12:04
  • Hola Sergioles.

    Como solución poco elegante... lo que hago hasta ahora es concatenar algo significativo:

    Ejemplo:

    insert into Registros_procesados values (getdate(), concat(OBJECT_NAME(@@PROCID), ' ', ' LLAMADA_1'), 'Producto A') -- Si esto es la línea 22 de la definicion del prc_prueba, es lo que le quiero pasar como parametro a la inserción.
    
    insert into Registros_procesados values (getdate(), concat(OBJECT_NAME(@@PROCID), ' ', ' LLAMADA_2'), 'Producto A') -- Si esto es la línea 26 de la definicion del prc_prueba, es lo que le quiero pasar como parametro a la inserción.
    


    Es efectivo, pero seguro que hay una mejor manera de conseguirlo.

    Saludos.

    miércoles, 30 de mayo de 2018 13:18