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

> EXECUTE AS ステートメントのリファレンス

# 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>;
};

別のユーザーとしてクエリを実行できます。

<div id="syntax">
  ## 構文
</div>

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

最初の形式 (`subquery` なし) では、現在のセッションで以降に実行されるすべてのクエリが、指定した `target_user` として実行されるようになります。

2 番目の形式 (`subquery` あり) では、指定した `subquery` のみが、指定した `target_user` として実行されます。

どちらの形式も使用するには、設定 `access_control_improvements.allow_impersonate_user`
を `1` に設定し、`IMPERSONATE` 権限が付与されている必要があります。たとえば、次のコマンド

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

ユーザー `user2` に `EXECUTE AS user1 ...` コマンドの実行を許可し、さらにユーザー `user3` には任意のユーザーとしてコマンドを実行することを許可します。

別のユーザーとして実行している間は、関数 [currentUser()](/ja/reference/functions/regular-functions/other-functions#currentUser) はそのユーザー名を返し、
関数 [authenticatedUser()](/ja/reference/functions/regular-functions/other-functions#authenticatedUser) は実際に認証されたユーザー名を返します。

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

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