Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

generar un store procedure???

Estas en el tema de generar un store procedure??? en el foro de SQL Server en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 15/01/2007, 16:20
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 18 años, 1 mes
Puntos: 0
Pregunta 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!!!
  #2 (permalink)  
Antiguo 15/01/2007, 19:54
 
Fecha de Ingreso: noviembre-2005
Mensajes: 658
Antigüedad: 19 años
Puntos: 3
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
  #3 (permalink)  
Antiguo 23/01/2007, 09:44
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: generar un store procedure???

Gracias por la ayuda monkyta!!! ...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!!!...
  #4 (permalink)  
Antiguo 23/01/2007, 10:06
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 18 años, 1 mes
Puntos: 0
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!!!...
  #5 (permalink)  
Antiguo 23/01/2007, 10:43
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 11 meses
Puntos: 38
Re: generar un store procedure???

y para que quieres guardar los valores en variables???
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #6 (permalink)  
Antiguo 24/01/2007, 09:28
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: generar un store procedure???

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!!!
  #7 (permalink)  
Antiguo 24/01/2007, 11:14
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 18 años, 1 mes
Puntos: 0
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!!!...
  #8 (permalink)  
Antiguo 25/01/2007, 09:18
 
Fecha de Ingreso: marzo-2006
Mensajes: 15
Antigüedad: 18 años, 8 meses
Puntos: 0
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
  #9 (permalink)  
Antiguo 25/01/2007, 12:50
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 18 años, 1 mes
Puntos: 0
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_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
Este SP me arroja un resultado de 4 campos x 1 fila, por ejemplo:

Código:
ID          CODE          TYPE         FECHA
5          071OLI6        OE            25/01/2007 12:45

Solo 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_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
Al codigo:

Código:
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

Pensando que me iba a arrojar como resultado lo que yo necesitaba,algo asi como:

Código:
@CODEOUT = 071OLI6
@TYPEOUT = OE
pero no fue asi... ...como sabras el resultado me muestra solo los nombres de los campos pero sin valores en estos...se que algo esta mal...pero no se como obtener lo que necesito...sugerencias??
  #10 (permalink)  
Antiguo 25/01/2007, 14:08
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 11 meses
Puntos: 38
Re: generar un store procedure???

Cita:
Iniciado por mary* Ver Mensaje
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!!!
no se porque dices que no te sirve en el select... por ejemplo si utilizas VB (en la otra aplicacion), puedes cargar el resultado en un recordset...

y si forzosamente requieres variables de salida lo puedes recuperar en un Command...

pero esa ya seria pregunta de VB supongo...

un saludo
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #11 (permalink)  
Antiguo 25/01/2007, 18:19
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: generar un store procedure???

Otra vez hola Andres95!!!...y gracias por los comentarios!!!

En realidad si me sirve el select, solo que mi resultado es algo asi:

Código:
ID          CODE          TYPE         FECHA
5          071OLI6        OE            25/01/2007 12:45
y yo necesito obtener x separado el calor que adquiera el campo de CODE y TYPE:

Código:
variableCODE = 071OLI6
variableTYPE = OE
y quiza de manera erronea pensé q podia hacerlo declarando unas variables las cuales almacenaran el valor que generara mi select.

Por 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
  #12 (permalink)  
Antiguo 26/01/2007, 08:59
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 11 meses
Puntos: 38
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....

un saludo


Código:
create procedure dbo.spa_bdr_dato
     @CODEOUT VARCHAR(20) OUTPUT,
     @TYPEOUT VARCHAR(20) OUTPUT
as
SELECT TOP 1 
       @CODEOUT = CODE
      ,@TYPEOUT = TYPE
FROM   dbo.BDR
WHERE  (CODE > '0') 
ORDER BY 
       ID DESC

GO

-- Ejecución del stored procedure

Declare  @CODEOUT_L VARCHAR(20),
         @TYPEOUT_L VARCHAR(20)


Execute dbo.spa_bdr_dato @CODEOUT_L OUTPUT, @TYPEOUT_L OUTPUT


Print ' Valor de @CODEOUT_L ' + @CODEOUT_L 
Print ' Valor de @TYPEOUT_L ' + @TYPEOUT_L
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #13 (permalink)  
Antiguo 26/01/2007, 13:21
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Antigüedad: 18 años, 1 mes
Puntos: 0
De acuerdo Re: generar un store procedure???

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...

Por otro lado te agradesco el script, ya lo ejecuté y eso era exactamente lo que yo necesitaba...mil gracias...

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... ...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!!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:58.