• Lunes 18 de Noviembre de 2024, 00:47

Autor Tema:  Procedimientos almacenados con retorno  (Leído 1054 veces)

Jose Arriagada

  • Miembro MUY activo
  • ***
  • Mensajes: 373
    • Ver Perfil
Procedimientos almacenados con retorno
« en: Viernes 17 de Enero de 2003, 16:25 »
0
Amigos:

Tengo la estructura de tabla:

Tabla : HParametro
Nombre_______________Tipo
=======================
Parametro_____________Int
Descripcion____________Text(50)
Valor_________________Numeric

Y el siguiente procedimiento almacenado asociado.

/** Este procedimiento hace lo siguiente:
**   Muestra el valor del parametro actualmente
**   Ahora, si el FLAG=1, entonces, primero incrementa el valor
*/
CREATE PROCEDURE Secuencia_Parametro @Parametro int,@Flag int, @Valor numeric OUTPUT
AS
IF @Flag=1
BEGIN
   UPDATE hParametros SET Valor=Valor+1 WHERE Parametro=@Parametro
END
SELECT @Valor=Valor FROM hParametros WHERE Parametro=@Parametro
RETURN @Valor


En el Server Query Analizer, si pongo lo siguiente:

declare @@Salida numeric
exec secuencia_parametro 3,0,@@Salida

Me muestra el siguiente mensaje:
The command(s) completed successfully.

En cambio, se modifico el valor 0 por 1:
declare @@Salida numeric
exec secuencia_parametro 3,1,@@Salida

Me muestra el siguiente mensaje:
(1 row(s) affected)


Lo que esta bien, ya que hace lo que deseo.

Ahora la GRAN PREGUNTA:

Si utilizo la siguiente sentencia en VB:
SentenciaSQL="Select Valor from HParametros Where Parametro=3"
Set Resultado=aConexion.OpenResultSet(Sentenciasql)
If Not Resultado.EOF Then
   Msg="Valor Parametro=" & Resultado!Valor
   Msgbox Msg
Endif

Lo que hace es, recuperar el valor del parametro 3, utilizando directamente una consulta.

NOTA: Utilizo RDO para conectarme, pero para el caso, es indiferente, ya que lo que importa es lo siguiente:

QUE INSTRUCCIONES UTILIZO PARA EJECUTAR EL PROCEDIMIENTO ALMACENADO Y RECUPERAR EL VALOR DE RETORNO?

De antemano, muchisimas gracias.


P.D.: En todo caso, en todos los libros de SQL que he revisado, los ejemplos funcionan al 100% en el Query Analizer, pero no asi al querer usarlos en codigo VB.