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