> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentación sobre la sentencia EXECUTE AS

# Sentencia EXECUTE AS

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            Not supported in ClickHouse Cloud
        </div>;
};

Permite ejecutar consultas en nombre de otro usuario.

<div id="syntax">
  ## Sintaxis
</div>

```sql theme={null}
EXECUTE AS target_user;
EXECUTE AS target_user subquery;
```

La primera forma (sin `subquery`) establece que todas las consultas posteriores de la sesión actual se ejecutarán en nombre del `target_user` especificado.

La segunda forma (con `subquery`) ejecuta solo la `subquery` especificada en nombre del `target_user` especificado.

Para que ambas formas funcionen, es necesario que la opción de configuración `access_control_improvements.allow_impersonate_user`
esté establecida en `1` y que se haya otorgado el privilegio `IMPERSONATE`. Por ejemplo, los siguientes comandos

```sql theme={null}
GRANT IMPERSONATE ON user1 TO user2;
GRANT IMPERSONATE ON * TO user3;
```

permitir al usuario `user2` ejecutar comandos `EXECUTE AS user1 ...` y también permitir al usuario `user3` ejecutar comandos como cualquier usuario.

Al hacerse pasar por otro usuario, la función [currentUser()](/es/reference/functions/regular-functions/other-functions#currentUser) devuelve el nombre de ese otro usuario,
y la función [authenticatedUser()](/es/reference/functions/regular-functions/other-functions#authenticatedUser) devuelve el nombre del usuario que realmente se ha autenticado.

<div id="examples">
  ## Ejemplos
</div>

```sql theme={null}
SELECT currentUser(), authenticatedUser(); -- muestra "default    default"
CREATE USER james;
EXECUTE AS james SELECT currentUser(), authenticatedUser(); -- muestra "james    default"
```
