blob: 704e831a1f072eb30ac706021a8ec1203fc8a49e (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# 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<Type>`.
* `Void` и `Null`— поддерживаемые [специальные типы](../types/special.md).
## Пример
```yql
DECLARE $x AS String;
DECLARE $y AS String?;
DECLARE $z AS List<String>;
SELECT $x, $y, $z;
```
Примеры передачи параметров для DECLARE можно найти [здесь](../types/json.md).
|