![]() |
generar un store procedure??? :-) Hola a todos!!!...quisiera generar un procedimiento almacenado, es sencillo pero sinceramente no entiendo la lógica, les esplico que es lo que necesito hacer, espero me puedan ayudar: Tengo una tabla en sql server 2000, la cual se llama BDR, y consta de 4 campos: ID (key), CODE (char), TYPE (char) y FECHA (getdate), necesito generar un store procedure que me muestre el ultimo dato capturado, y solo necesito que me muestre el dato que se encuentra en el campo de CODE y TYPE y que ademas los muestre en variables distintas SELECT TOP 1 CODE, TYPE, FECHA FROM dbo.BDR WHERE (CODE > '0') ORDER BY FECHA DESC O BIEN SELECT TOP 1 CODE, TYPE, FECHA FROM dbo.BDR WHERE (CODE > '0') ORDER BY ID DESC Ademas como puedo ejecutar y visualizar el resultado del store prodecure??...gracias!!! |
Re: generar un store procedure??? create procedure spa_ult_dato as SELECT TOP 1 CODE as CODIGO, TYPE as TIPO, FECHA as FECHA FROM dbo.BDR WHERE (CODE > '0') ORDER BY ID DESC RETURN Para invocarlo basta solo llamarlo asi (no tiene parámetros) spa_ult_dato o bien, exec spa_ult_dato |
Re: generar un store procedure??? :arriba: Gracias por la ayuda monkyta!!!:aplauso: ...solo que ahora se me complica un poco mas, ya que eso era lo que necesitaba pero ya que se realiza el select necesito guardar mi resultado en unas variables, en realidad solo los datos que me arroja el query en los campos de CODE y TYPE...Pero ademas necesito que se ejecute el Store Procedure cada vez que se introduzca una fila de datos, esto creo que se realiza generando un trigger...El trigger se genera aparte del Store Procedure o pueden ir en el mismo codigo? Esto es lo que agregué para el Store Procedure, pero me marca un error: create procedure sp_bal_dato as DECLARE @CODEOUT CHAR, @TYPEOUT CHAR SELECT TOP 1 CODE as CODE, TYPE as TYPE, FECHA as FECHA FROM dbo.BDR WHERE (CODE > '0') ORDER BY ID DESC @CODEOUT=CODE @TYPEOUT=TYPE RETURN @CODEOUT RETURN @TYPEOUT Espero me puedan ayudar!!!...:'( |
Re: generar un store procedure??? Cambie mi codigo asi: create procedure spa_ult_dato as DECLARE @CODEOUT CHAR, @TYPEOUT CHAR SELECT TOP 1 CODE as CODE, TYPE as TYPE, FECHA as FECHA FROM dbo.BDR WHERE (CODE > '0') and CODE=@CODEOUT and TYPE=@TYPEOUT ORDER BY ID DESC RETURN @CODEOUT RETURN @TYPEOUT Ya no me marca error pero cuando lo ejecuto no me muestra nada!!!...no se si esta bien!!!...:'( |
Re: generar un store procedure??? y para que quieres guardar los valores en variables??? |
Re: generar un store procedure??? :adios: Hola Andres95!!!...lo que pasa es que necesito guardarlas en variables, ya que dichas variables las voy a ocupar en otra aplicacion...y asi tan solo con el select no me sirven!!!:'( |
Re: generar un store procedure??? Hola otra vez!!!...he estado intentando generar mis variables...pero algo estoy haciendo mal...alguien tiene alguna idea???...:'( ...gracias!!! este es mi Store procedure: create procedure spa_bdr_dato @CODEOUT CHAR OUTPUT, @TYPEOUT CHAR OUTPUT as SELECT TOP 1 CODE as CODE, TYPE as TYPE, FECHA as FECHA FROM dbo.BDR WHERE (CODE > '0') and CODE=@CODEOUT and TYPE=@TYPEOUT ORDER BY ID DESC RETURN @CODEOUT RETURN @TYPEOUT y asi lo estoy ejecutando: DECLARE @CODEOUT AS CHAR, @TYPEOUT AS CHAR EXECUTE spa_bdr_dato @CODEOUT OUTPUT, @TYPEOUT OUTPUT PRINT @CODEOUT PRINT @TYPEOUT En realidad no sé si esta bien...pero cuando lo ejecuto solo me muestra los campos pero sin datos!!!...:abajo: |
Re: generar un store procedure??? Mary: Según lo que veo estás tomando las variables de salida como criterio para el select. Dado que @CODEOUT y @TYPEOUT no se inicializan toman valor NULL. Por lo tanto para todos los casos estás ejecutando: SELECT TOP 1 CODE as CODE, TYPE as TYPE, FECHA as FECHA FROM dbo.BDR WHERE (CODE > '0') and CODE=NULL and TYPE=NULL ORDER BY ID DESC Eso siempre va a dar una salida como la que te está dando ahora. Otra cosa, ojo con "CODE > '0'", CODE es numérico o (char/varchar)? Saludos |
Re: generar un store procedure??? :-) Hola jyefi!!! Primeramente el valor de CODE y TYPE son char ambos...como veras no soy una experta...no sé si leiste lo que en un pricipio pretendia hacer...resulta que monkyta me ayudo y el SP que me sugirió hace lo que necesito: Código: create procedure spa_ult_datoCódigo: ID CODE TYPE FECHASolo que despues me di cuenta necesito que ya que se haya ejecutado el SP y me arroje un resultado, los datos de los campos CODE y TYPE necesito almacenarlos en una "variable" por separado, ya que necesito enviar dichas variables a otra aplicacion, las cuales tomaran el valor de los datos que arrojen los campos de CODE y TYPE cada vez que se ejecute el SP...espero haberme explicado...la verdad no entiendo mucho lo de los SP, pero buscando un poco modifique el codigo: Código: create procedure spa_ult_datoCódigo: create procedure spa_bdr_datoPensando que me iba a arrojar como resultado lo que yo necesitaba,algo asi como: Código: @CODEOUT = 071OLI6 |
Re: generar un store procedure??? Cita:
y si forzosamente requieres variables de salida lo puedes recuperar en un Command... pero esa ya seria pregunta de VB supongo... :arriba: un saludo |
Re: generar un store procedure??? Otra vez hola Andres95!!!...y gracias por los comentarios!!!:arriba: En realidad si me sirve el select, solo que mi resultado es algo asi: Código: ID CODE TYPE FECHACódigo: variableCODE = 071OLI6Por otro lado no es una aplicacion de VB, ASP, PHP o algo parecido...es de otro tipo...sugerencias???...:'( create procedure spa_bdr_dato @CODEOUT CHAR OUTPUT, @TYPEOUT CHAR OUTPUT as SELECT TOP 1 CODE as CODE, TYPE as TYPE, FECHA as FECHA FROM dbo.BDR WHERE (CODE > '0') and CODE=@CODEOUT and TYPE=@TYPEOUT ORDER BY ID DESC RETURN @CODEOUT RETURN @TYPEOUT |
Re: generar un store procedure??? Bueno, te comento que: - El return en un stored procedure de SQL se utiliza para regresar el estatus del proceso, por el ejemplo si el sp regresa cero, sabemos que terminó bien. Si regresa otro valor indica que ocurrió un error. - El select que te anexo, obtiene el primer resultado de la tabla dbr, en donde el campo code sea mayor que cero, pero en caracter (no es lo mismo que hacer una comparación con un campo numerico). - El resultado obtenido se almacena en las variables que indicaste de salida en los parametros. Si el select retorna una fila, los valores de los campos son almacenados en la variable, y no se regresan como resultset (de la forma que se regresan si no incluimos las variables de salida). - No indicas cual es la longitud de tus campos y por eso los defini con un largo de 20, varchar. Es importante indicar la longitud correcta del campo a almacenar. - Como no indicaste el tipo de aplicación en el que obtendras la informacion de salida, te comento con VB En VB declaras un comando con sus respectivos parametros, y en el tipo de parametro debes indicar el tipo de salida para obtener el valor que te regresa el parametro. - Adicionalmente te agrego un script que ejecuta el sp que creaste e imprime el valor de salida obtenido en las variables. Espero te sirva.... :arriba: un saludo Código: |
Re: generar un store procedure??? :adios: Hola nuevamente Andres95!!!...Te agradezco por todos los comentarios, sugerencias y recomendaciones...creeme que para mi resultaron muy buenos...pude entender mejor eso de los SP...disculpa si no me supe explicar bien desde un pricipio...:borracho: Por otro lado te agradesco el script, ya lo ejecuté y eso era exactamente lo que yo necesitaba...mil gracias...:aplauso: :aplauso: :aplauso: :aplauso: :aplauso: Ahora solo me resta realizar un trigger el cual me permita que se ejecute el SP de manera automatica cada vez que se agrege una fila de datos en mi tabla...:pensando: ...tampoco tengo idea de como hacer el trigger...pero lo voy a intentar y si no sale...:'( ...ya estaré dandoles lata nuevamente...otra vez mil gracias!!!! |
| La zona horaria es GMT -6. Ahora son las 07:52. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.