CREATE OR ALTER PROCEDURE CONTROLE_USUARIO (
    USUARIO_ID INTEGER,
    CONTROLE_ID INTEGER)
RETURNS (
    ID INTEGER,
    GRUPO VARCHAR(10),
    PARAMETRO VARCHAR(500),
    VALOR_EXT VARCHAR(500),
    COMENTARIO VARCHAR(500),
    MENU VARCHAR(11),
    MENUS VARCHAR(500))
AS
begin
    FOR
       Select
    
        ID,
        GRUPO,
        PARAMETRO,
        --VALOR_EXT,
        COMENTARIO,
        MENU,
        MENUS,
    
        Coalesce((
        Select c.valor_ext
        from tbcontrole_u u, tbcontrole_usuario c
        where u.id = c.id
        and c.usuario_id = :USUARIO_ID
        and u.id = g.id),
    
        Coalesce((
        Select p.valor
        from tbcontrole_u j, tbusuario_controle_perfil p, tbusuario_perfil_detalhe c
        where j.id = p.controle_id
        and p.perfil_id = c.perfil_id
        and c.usuario_id = :USUARIO_ID
        and j.id = g.id),
    
        (
        select j.valor_admin
        from tbcontrole_u j, tbusuario_controle_grupo p, tbusuario_perfil_detalhe c
        where j.grupo = p.grupo
        and p.perfil_id = c.perfil_id
        and c.usuario_id = :USUARIO_ID
        and j.id = g.id))) as VALOR_EXT
    
    from tbcontrole_u G where g.id = :CONTROLE_ID

    INTO    :ID,
            :GRUPO,
            :PARAMETRO,
            :COMENTARIO,
            :MENU,
            :MENUS,
            :VALOR_EXT

    DO begin
      suspend;
    end

end;