![]() |
| |||||||
| Registrarse | Preguntas Frecuentes | Lista de Foreros | Calendario | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
| | LinkBack | Herramientas | Desplegado |
| |||
| 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; --1er bloque SET ***VARPERFIL = (SELECT CONVERT(INT ,RTRIM(USUARIOS.PERFILID)) FROM USUARIOS WHERE ESTADO = 1 AND RTRIM(USUARIOS.USUARIO) = ***USUARIO) --2do bloque SET ***VARAPLICACION = (SELECT APLICACIONES.APLICACIONID FROM APLICACIONES WHERE ESTADO = 1 AND RTRIM(APLICACIONES.RUTA) = ***FORM) --3er bloque 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 |
| | ||||
| ||||
| |
| |||
| 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; > --1er bloque > SET ***VARPERFIL = (SELECT CONVERT(INT ,RTRIM(USUARIOS.PERFILID)) > FROM USUARIOS > WHERE ESTADO = 1 AND RTRIM(USUARIOS.USUARIO) = ***USUARIO) > --2do bloque > SET ***VARAPLICACION = (SELECT APLICACIONES.APLICACIONID > FROM APLICACIONES > WHERE ESTADO = 1 AND RTRIM(APLICACIONES.RUTA) = ***FORM) > --3er bloque > 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 > |
| |||
| Estoy haciendo las pruebas desde el SQL Server Management Studio, los parametros a suministrar son de la forma: ***usuario = aherrera y ***form = ModuloAdministracion/Administracion.aspx al ingresar estos datos, debe tener como resultado para el 1er bloque el valor de 2, para el 2do bloque 4, y en el 3er bloque con estos valores 2 y 4, debo tener 1 como resultado final. como comente antes al probar bloque x bloque funciona, pero cuando pruebo todo el SP al imprimir la variable ***res, no obtengo nada. Gracias por la ayuda. |
| |||
| Hola, Cuando ejecutes el SP debes especificar que el parametro RES es output, ejemplo: DECLARE ***RES INT EXEC USP_PERFIL_VERIFICAR '', '', ***RES OUTPUT SELECT ***RES por otro lado... podrías dejar todo en un solo bloque en el SP... mira el ejemplo: ALTER PROCEDURE [dbo].[USP_PERFIL_VERIFICAR] ( ***USUARIO VARCHAR(24), ***FORM VARCHAR(256), ***RES INT OUTPUT ) AS BEGIN SET NOCOUNT ON IF EXISTS(SELECT TOP 1 ACCESOS.PERFILID FROM ACCESOS AC INNER JOIN USUARIOS US ON (AC.PERFILID = US.PERFILID) INNER JOIN APLICACIONES AP ON (AC.APLICACIONID = AP.APLICACIONID) WHERE RTRIM(US.USUARIO) = ***USUARIO AND RTRIM(AP.RUTA) = ***FORM AND US.ESTADO = 1 AND AP.ESTADO = 1 AND UC.ESTADO = 1 ) SET ***RES = 1 ELSE SET ***RES = 0 END -- Saludos, Jhonny Vargas P. Santiago de Chile "arturohm" <arturohm***gmail.com> escribió en el mensaje de noticias:3464dd9c-37ac-4cb1-a573-18b689e329b2***x16g2000prn.googlegroups.com... > 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; > --1er bloque > SET ***VARPERFIL = (SELECT CONVERT(INT ,RTRIM(USUARIOS.PERFILID)) > FROM USUARIOS > WHERE ESTADO = 1 AND RTRIM(USUARIOS.USUARIO) = ***USUARIO) > --2do bloque > SET ***VARAPLICACION = (SELECT APLICACIONES.APLICACIONID > FROM APLICACIONES > WHERE ESTADO = 1 AND RTRIM(APLICACIONES.RUTA) = ***FORM) > --3er bloque > 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 |
| |
| |
![]() |
| Herramientas | |
| Desplegado | |
| |
Temas Similares | ||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Comparar >= en Enterprise Search SQL Syntax | Kr1x | Newsgroup microsoft.public.es.sharepoint | 0 | 25-02-2009 16:35:43 |
| List<T>.Exists | Robert Barreiro | Newsgroup microsoft.public.es.csharp | 2 | 06-03-2008 20:33:41 |
| NOT EXISTS | Penta | Newsgroup microsoft.public.es.sqlserver | 4 | 19-02-2008 13:30:31 |
| File exists | Xavi_Q | Newsgroup microsoft.public.es.vb | 2 | 10-02-2008 18:16:42 |
| Optimizacion en IF.....EXISTS | Juan Carlos Mendoza | Newsgroup microsoft.public.es.sqlserver | 4 | 13-11-2007 21:15:00 |