if exists syntax - consulta

06/01/2009 - 23:20 por arturohm | Informe spam
Buenos dias,

tengo el siguiente SP, cuando pruebo bloque x bloque funciona
correctamente, pero cuando ejecuto o pruebo todo el SP, no obtengo
nada como resultado, los parametos que ingresan son de la forma:
"usuario1" y "Carpeta\archivo.ext" y como resultado de salida debo
obtener 1 o 0, pero no obtengo nada, cualquier ayuda lo agradeceria
mucho:


ALTER PROCEDURE [dbo].[USP_PERFIL_VERIFICAR]
(
@USUARIO VARCHAR(24),
@FORM VARCHAR(256),
@RES INT OUTPUT
)
AS
BEGIN

DECLARE @VARPERFIL INT,@VARAPLICACION INT;
SET @VARPERFIL = (SELECT CONVERT(INT ,RTRIM(USUARIOS.PERFILID))
FROM USUARIOS
WHERE ESTADO = 1 AND RTRIM(USUARIOS.USUARIO) = @USUARIO)
SET @VARAPLICACION = (SELECT APLICACIONES.APLICACIONID
FROM APLICACIONES
WHERE ESTADO = 1 AND RTRIM(APLICACIONES.RUTA) = @FORM)
IF EXISTS(
SELECT ACCESOS.PERFILID,ACCESOS.APLICACIONID
FROM ACCESOS
WHERE ACCESOS.PERFILID = @VARPERFIL AND ACCESOS.APLICACIONID @VARAPLICACION AND
ACCESOS.ESTADO = 1
)
BEGIN
SET @RES = 1
END
ELSE
BEGIN
SET @RES = 0
END

END
GO
 

Leer las respuestas

#1 Alejandro Mesa
07/01/2009 - 01:54 | Informe spam
No veo ningun error a primera vista. Lo unico seria agregar "set nocount on"
como primera instrucion para evitar que el mensaje de filas afectadas sea
devuelto a la aplicacion cliente y tengas que recorrer mas de un resultado.

Tambien puedes usar las dos primeras sentencias directamente con la ultima.

ALTER PROCEDURE [dbo].[USP_PERFIL_VERIFICAR]
(
@USUARIO VARCHAR(24),
@FORM VARCHAR(256),
@RES INT OUTPUT
)
AS

SET NOCOUNT ON

IF EXISTS(
SELECT
*
FROM
ACCESOS
WHERE
ACCESOS.PERFILID = (SELECT CONVERT(INT ,RTRIM(USUARIOS.PERFILID)) FROM
USUARIOS WHERE ESTADO = 1 AND USUARIOS.USUARIO = @USUARIO)
AND ACCESOS.APLICACIONID = (SELECT APLICACIONES.APLICACIONID FROM
APLICACIONES WHERE ESTADO = 1 AND APLICACIONES.RUTA = @FORM)
AND ACCESOS.ESTADO = 1
)
SET @RES = 1
ELSE
SET @RES = 0
GO

Desde donde estas ejecutando este sp para probar el resultado?


AMB



"arturohm" wrote:

Buenos dias,

tengo el siguiente SP, cuando pruebo bloque x bloque funciona
correctamente, pero cuando ejecuto o pruebo todo el SP, no obtengo
nada como resultado, los parametos que ingresan son de la forma:
"usuario1" y "Carpeta\archivo.ext" y como resultado de salida debo
obtener 1 o 0, pero no obtengo nada, cualquier ayuda lo agradeceria
mucho:


ALTER PROCEDURE [dbo].[USP_PERFIL_VERIFICAR]
(
@USUARIO VARCHAR(24),
@FORM VARCHAR(256),
@RES INT OUTPUT
)
AS
BEGIN

DECLARE @VARPERFIL INT,@VARAPLICACION INT;
SET @VARPERFIL = (SELECT CONVERT(INT ,RTRIM(USUARIOS.PERFILID))
FROM USUARIOS
WHERE ESTADO = 1 AND RTRIM(USUARIOS.USUARIO) = @USUARIO)
SET @VARAPLICACION = (SELECT APLICACIONES.APLICACIONID
FROM APLICACIONES
WHERE ESTADO = 1 AND RTRIM(APLICACIONES.RUTA) = @FORM)
IF EXISTS(
SELECT ACCESOS.PERFILID,ACCESOS.APLICACIONID
FROM ACCESOS
WHERE ACCESOS.PERFILID = @VARPERFIL AND ACCESOS.APLICACIONID > @VARAPLICACION AND
ACCESOS.ESTADO = 1
)
BEGIN
SET @RES = 1
END
ELSE
BEGIN
SET @RES = 0
END

END
GO

Preguntas similares