none
PROCEDIMIENTO ALMACENADO SQL SERVER RRS feed

  • Pregunta

  • Hola alguien me podría ayudar u orientar a como puedo crear un SP el cual contenga como parámetro fecha, necesito saber como realizar el ejercicio, que al momento de realizar una consulta pida ingresar la fecha para mostrar el detalle

    yo tengo algo mas o menos así;

    ALTER PROC [dbo].[sp_toma_inventarios]
    (
    @fecha date,
    @bodega int=0,
    @familia varchar(50)
    )
    AS
    SELECT tm.fecha_toma , tm.bodega, tm.codfam, tm.codsub, tm.nomart, tm.stock_logico, tm.stock_fisico, 
          ar.stock_01, ar.codalt, ar.ubiinv1
    FROM  invToma tm INNER JOIN
          invArticulos ar ON tm.codfam = ar.codfam 


    pero al ejecutar el SP me da error y estoy seguro que algo estoy haciendo mal en el parámetro @fecha o algo me falta, la idea es que al ingresar una fecha me muestre el resultado de inventario de una fecha X.

    gracias.

    lunes, 24 de octubre de 2016 20:00

Respuestas

  • Estimado ya tengo el query, pero ahora la duda que tengo es como hacer uso del parámetro fecha para que muestre los datos, por ejemplo si ejecuto el SP ? como debo ingresar la fecha y los datos de tipo varchar ?SP

    • Marcado como respuesta DaviBar miércoles, 26 de octubre de 2016 18:14
    martes, 25 de octubre de 2016 18:36

Todas las respuestas

  • DaviBar,

    Defines parámetros pero no los utilizas dentro del procedimiento. Mencionas que obtienes un error, ¿podrías adjuntar el mensaje del error?

    El procedimiento almacenado debería tener la siguiente forma:

    ALTER PROCEDURE dbo.sp_toma_inventarios
    (
        @fecha date,
        @bodega int = 0,
        @familia varchar(50)
    )
    AS
    BEGIN
        SELECT 
    	   tm.fecha_toma, 
    	   tm.bodega, 
    	   tm.codfam, 
    	   tm.codsub, 
    	   tm.nomart, 
    	   tm.stock_logico, 
    	   tm.stock_fisico, 
    	   ar.stock_01, 
    	   ar.codalt, 
    	   ar.ubiinv1
    FROM  
        invToma tm 
        INNER JOIN invArticulos ar ON tm.codfam = ar.codfam
    WHERE
        (tm.fecha = @fecha)
        AND (tm.BODEGA = @bodega OR @bodega = 0)
        AND (tm.familia = @familia)
    END


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    lunes, 24 de octubre de 2016 20:09
  • ASi tengo el procedimiento almacenado, pero al ejecutarlo me muestra muchas tablas, no se cual sera el error;

    ALTER PROC [dbo].[sp_toma_inventarios]
    (
        @fecha date,   /*'20160809'*/
        @bodega int = 0
    )
    AS
    BEGIN
        SELECT 
    	   tm.fecha_toma, 
    	   tm.bodega, 
    	   tm.codfam, 
    	   tm.codsub, 
    	   tm.nomart, 
    	   tm.stock_logico, 
    	   tm.stock_fisico, 
    	   ar.stock_01, 
    	   ar.codalt, 
    	   ar.ubiinv1
    FROM  
        invToma tm 
        INNER JOIN invArticulos ar ON tm.codfam = ar.codfam
    WHERE
        (tm.fecha_toma =@fecha)
        AND (tm.BODEGA = @bodega OR @bodega = 0)
    
    END
    

    lo necesito para un informe mas o menos como este;

    fecha toma:	01-09-2016		Familia:					Fecha:	20-10-2016
    Bodega:	1 Bodega Principal		Subfamilia:					pagina:	1 de 1
    									
    codigo articulo  	nombre articulo				Cod. Alt.	Ubicación	Stock Logico	Diferencia	Stock Fisico
    

    que muestre los datos

    lunes, 24 de octubre de 2016 20:48
  • Hola.

    Recomiendo primero escribir el query que te arrojará el Result Set esperado.

    Luego de validar que ese es el query, ahí si genera el Stored Procedure, definiendo el o los parámetros requeridos.

    Saludos,


    Guillermo Taylor F.
    MVP Data Platform & IT Pro
    Mi Blog

    martes, 25 de octubre de 2016 13:16
  • Estimado ya tengo el query, pero ahora la duda que tengo es como hacer uso del parámetro fecha para que muestre los datos, por ejemplo si ejecuto el SP ? como debo ingresar la fecha y los datos de tipo varchar ?SP

    • Marcado como respuesta DaviBar miércoles, 26 de octubre de 2016 18:14
    martes, 25 de octubre de 2016 18:36
  • Logre solucionar el problema, cambie el tipo de dato de fecha DATATIME a DATE y logre ejecutar el SP.

    gracias a todos por su ayuda.


    • Editado DaviBar miércoles, 26 de octubre de 2016 18:15 corrección de palabras
    miércoles, 26 de octubre de 2016 18:15