---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.4
alternate:
  - https://ydb.tech/docs/en/yql/reference/syntax/declare.md
  - https://ydb.tech/docs/ru/yql/reference/syntax/declare.md
sourcePath: ru/core/yql/reference/syntax/declare.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt


# DECLARE

Объявляет типизированное [именованное выражение](https://ydb.tech/docs/ru/yql/reference/syntax/expressions.md#named-nodes), значение для которого будет передано параметром отдельно от текста запроса. Параметризация дает возможность отделить разработку аналитического решения задачи от её запуска с различными вариантами входных значений.

Для транзакционной нагрузки использование параметров позволяет избежать перекомпиляции запросов при повторении однотипных вызовов, снижая потребление ресурсов сервера, и исключая время компиляции из общего времени исполнения запроса.

Передача параметров поддерживается в SDK, CLI, и в графических интерфейсах.

## Синтаксис

```yql
DECLARE $named-node AS data_type;
```

1. Ключевое слово `DECLARE`.
1. `$named-node` — имя, по которому можно будет обращаться к переданному значению, должно начинаться с символа `$`.
1. Ключевое слово `AS`.
1. `data_type` — тип данных [в виде строки в принятом формате](https://ydb.tech/docs/ru/yql/reference/types/type_string.md).

Допустимы только сериализуемые типы данных:

* [Примитивные типы](https://ydb.tech/docs/ru/yql/reference/types/primitive.md).
* [Опциональные типы](https://ydb.tech/docs/ru/yql/reference/types/optional.md).
* [Контейнеры](https://ydb.tech/docs/ru/yql/reference/types/containers.md) за исключением `Stream<Type>`.
* `Void` и `Null`— поддерживаемые [специальные типы](https://ydb.tech/docs/ru/yql/reference/types/special.md).

## Пример

```yql
DECLARE $x AS String;
DECLARE $y AS String?;
DECLARE $z AS List<String>;

SELECT $x, $y, $z;
```

Примеры передачи параметров для DECLARE можно найти [здесь](https://ydb.tech/docs/ru/yql/reference/types/json.md).

