¿Como utilizar campos de un select en un proc.almacenado?

28/07/2006 - 12:22 por Hugo Gsell | Informe spam
Hola. Tengo un procedimiento almacenado que me debe devolver varios campos
de una tabla,
para lo cual le paso como parametros de salida los mismos.
Lo que no puedo realizar es la asiganción luego del select de los campos
devuelvtos por la consulta
a los campos que necesito me devuelva la consulta.. este es el procedimiento
almacenado:
digamos lo que falla es abajo, la asignación... SET @psIdUsuario =IdUsuario

CREATE PROCEDURE [dbo].[RecuperaUsuario]
@pNombre varchar(50),
@pContrasena varchar(50), --Hash / Encriptada de la contraseña es lo que se
guarda
@psIdUsuario smallint output,
@psNombre varchar(50) output,
@psContrasena varchar(50) output,
@psFechaAlta smalldatetime output,
@psFechaCambioContrasena smalldatetime output,
@psNivel smallint output

AS
SET NOCOUNT ON
DECLARE @error int
DECLARE @NroRegsAfectados smallint
BEGIN
SET NOCOUNT ON;

SELECT IdUsuario FROM Usuarios WHERE Nombre=@pNombre AND
Contrasena=@pContrasena
SELECT @error = @@ERROR,@NroRegsAfectados = @@ROWCOUNT
IF @NroRegsAfectados=1
BEGIN
END
END
RETURN @error
GO
 

Leer las respuestas

#1 Alvaro Mosquera
28/07/2006 - 13:44 | Informe spam
La asignación tiene que ser cuando lees el registro.
SELECT @psIdUsuario = IdUsuario , @psNombre = nombre ,... FROM Usuarios
WHERE Nombre=@pNombre AND
Contrasena=@pContrasena


"Hugo Gsell" escribió:

Hola. Tengo un procedimiento almacenado que me debe devolver varios campos
de una tabla,
para lo cual le paso como parametros de salida los mismos.
Lo que no puedo realizar es la asiganción luego del select de los campos
devuelvtos por la consulta
a los campos que necesito me devuelva la consulta.. este es el procedimiento
almacenado:
digamos lo que falla es abajo, la asignación... SET @psIdUsuario =IdUsuario

CREATE PROCEDURE [dbo].[RecuperaUsuario]
@pNombre varchar(50),
@pContrasena varchar(50), --Hash / Encriptada de la contraseña es lo que se
guarda
@psIdUsuario smallint output,
@psNombre varchar(50) output,
@psContrasena varchar(50) output,
@psFechaAlta smalldatetime output,
@psFechaCambioContrasena smalldatetime output,
@psNivel smallint output

AS
SET NOCOUNT ON
DECLARE @error int
DECLARE @NroRegsAfectados smallint
BEGIN
SET NOCOUNT ON;

SELECT IdUsuario FROM Usuarios WHERE Nombre=@pNombre AND
Contrasena=@pContrasena
SELECT @error = @@ERROR,@NroRegsAfectados = @@ROWCOUNT
IF @NroRegsAfectados=1
BEGIN
END
END
RETURN @error
GO



Preguntas similares