Retroceder   Foros del Web > Programación para sitios web > Bases de Datos > SQL Server

Respuesta
 
Herramientas Desplegado
Antiguo 15-ene-2007, 15:20   #1 (permalink)
mary* ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
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!!!
mary* está desconectado   Responder Citando
Antiguo 15-ene-2007, 18:54   #2 (permalink)
monkyta no se puede cailificar en este momento
 
Fecha de Ingreso: noviembre-2005
Mensajes: 632
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
monkyta está desconectado   Responder Citando
Antiguo 23-ene-2007, 08:44   #3 (permalink)
mary* ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
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!!!...
mary* está desconectado   Responder Citando
Antiguo 23-ene-2007, 09:06   #4 (permalink)
mary* ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
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!!!...
mary* está desconectado   Responder Citando
Antiguo 23-ene-2007, 09:43   #5 (permalink)
Colaborador
Andres95 tiene algunos puntos positivos de karma
 
Avatar de Andres95
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.157
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...
Andres95 esta en línea ahora   Responder Citando
Antiguo 24-ene-2007, 08:28   #6 (permalink)
mary* ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
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!!!
mary* está desconectado   Responder Citando
Antiguo 24-ene-2007, 10:14   #7 (permalink)
mary* ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Triste 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!!!...
mary* está desconectado   Responder Citando
Antiguo 25-ene-2007, 08:18   #8 (permalink)
jyefi ha deshabilitado el karma
 
Fecha de Ingreso: marzo-2006
Mensajes: 15
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
jyefi está desconectado   Responder Citando
Antiguo 25-ene-2007, 11:50   #9 (permalink)
mary* ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Triste 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??
mary* está desconectado   Responder Citando
Antiguo 25-ene-2007, 13:08   #10 (permalink)
Colaborador
Andres95 tiene algunos puntos positivos de karma
 
Avatar de Andres95
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.157
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...
Andres95 esta en línea ahora   Responder Citando
Antiguo 25-ene-2007, 17:19   #11 (permalink)
mary* ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
Triste 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
mary* está desconectado   Responder Citando
Antiguo 26-ene-2007, 07:59   #12 (permalink)
Colaborador
Andres95 tiene algunos puntos positivos de karma
 
Avatar de Andres95
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.157
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...
Andres95 esta en línea ahora   Responder Citando
Antiguo 26-ene-2007, 12:21   #13 (permalink)
mary* ha deshabilitado el karma
 
Fecha de Ingreso: septiembre-2006
Mensajes: 161
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!!!!
mary* está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 10:52.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93