# DECLARE Объявляет типизированное [именованное выражение](expressions.md#named-nodes), значение для которого будет передано параметром отдельно от текста запроса. Параметризация дает возможность отделить разработку аналитического решения задачи от её запуска с различными вариантами входных значений. Для транзакционной нагрузки использование параметров позволяет избежать перекомпиляции запросов при повторении однотипных вызовов, снижая потребление ресурсов сервера, и исключая время компиляции из общего времени исполнения запроса. Передача параметров поддерживается в SDK, CLI, и в графических интерфейсах. ## Синтаксис ```yql DECLARE $named-node AS data_type; ``` 1. Ключевое слово `DECLARE`. 1. `$named-node` — имя, по которому можно будет обращаться к переданному значению, должно начинаться с символа `$`. 1. Ключевое слово `AS`. 1. `data_type` — тип данных [в виде строки в принятом формате](../types/type_string.md). Допустимы только сериализуемые типы данных: * [Примитивные типы](../types/primitive.md). * [Опциональные типы](../types/optional.md). * [Контейнеры](../types/containers.md) за исключением `Stream`. * `Void` и `Null`— поддерживаемые [специальные типы](../types/special.md). ## Пример ```yql DECLARE $x AS String; DECLARE $y AS String?; DECLARE $z AS List; SELECT $x, $y, $z; ``` Примеры передачи параметров для DECLARE можно найти [здесь](../types/json.md).