/****** Object:  StoredProcedure [dbo].[P_PRV_Opciones_ConHijos]    Script Date: 10/05/2019 10:36:24 ******/
SET ANSI_NULLS ON
SIGUIENTELINEAPARAEJECUCION
SET QUOTED_IDENTIFIER ON
SIGUIENTELINEAPARAEJECUCION
CREATE PROCEDURE [dbo].[P_PRV_Opciones_ConHijos]
	@opcion varchar(100)
	as
		BEGIN
			WITH CTE_OPCIONES (opcion,idPermiso,opcionPadre)
			AS
			(
				select opcion,idPermiso,opcionPadre 
				from PRV_Opciones_Permisos 
				where opcion=@opcion
				union all
				select aux.opcion,aux.idPermiso,aux.opcionPadre
				from PRV_Opciones_Permisos aux
				inner join CTE_OPCIONES cte on aux.opcionPadre=cte.opcion
			)

			select DISTINCT *
			from CTE_OPCIONES
		END

SIGUIENTELINEAPARAEJECUCION
/****** Object:  StoredProcedure [dbo].[P_PRV_Opciones_ConHijos2]    Script Date: 10/05/2019 10:36:24 ******/
SET ANSI_NULLS ON
SIGUIENTELINEAPARAEJECUCION
SET QUOTED_IDENTIFIER ON
SIGUIENTELINEAPARAEJECUCION


CREATE PROCEDURE [dbo].[P_PRV_Opciones_ConHijos2]
	@opcion varchar(100)
	as
		BEGIN
			WITH CTE_OPCIONES (Valor,idObjeto)
			AS
			(
				SELECT opcion,idObjeto
				FROM PRV_Opcion_Objeto_Permiso 
				WHERE opcion=@opcion
				UNION ALL
				SELECT aux.opcion ,aux.idObjeto
				FROM PRV_Opcion_Objeto_Permiso aux
				INNER JOIN CTE_OPCIONES cte on aux.opcionPadre=cte.Valor
			)

			--Consulta
			select DISTINCT (CASE WHEN not PRV_Objetos.descripcion is null then PRV_Objetos.descripcion else Valor end) as opcion
			from CTE_OPCIONES
			LEFT JOIN PRV_Objetos on CTE_OPCIONES.idObjeto=PRV_Objetos.id

		END

SIGUIENTELINEAPARAEJECUCION
