Variables & Types¶
Declaring Variables¶
Use DECLARE to create variables:
Or use VAR for shorthand:
Data Types¶
STRING¶
Text values with single or double quotes:
Operations:
-- Concatenation
SET full_name = first_name || ' ' || last_name;
-- Length
SET len = LENGTH(message);
-- Substring
SET part = SUBSTR(message, 1, 5); -- 'Hello'
NUMBER¶
Integer and floating-point values:
Operations:
BOOLEAN¶
True or false values (case-insensitive):
Operations:
ARRAY¶
Ordered list of values:
DECLARE numbers ARRAY = [1, 2, 3, 4, 5];
DECLARE fruits ARRAY = ['apple', 'banana', 'cherry'];
DECLARE mixed ARRAY = [1, 'two', TRUE];
Access:
Operations:
SET len = ARRAY_LENGTH(fruits); -- 3
SET extended = ARRAY_APPEND(fruits, 'date');
SET found = ARRAY_CONTAINS(fruits, 'apple'); -- TRUE
DOCUMENT¶
JSON objects:
Access:
Operations:
SET keys = DOCUMENT_KEYS(user); -- ['name', 'age', 'email']
SET values = DOCUMENT_VALUES(user); -- ['John', 30, 'john@...']
SET has_name = DOCUMENT_CONTAINS(user, 'name'); -- TRUE
DATE¶
Date and timestamp values:
Operations:
SET tomorrow = DATE_ADD(today, 1, 'DAY');
SET year = EXTRACT_YEAR(today);
SET month = EXTRACT_MONTH(today);
CURSOR¶
Iterator for query results:
DECLARE logs CURSOR FOR
FROM logs-sample
| WHERE level == "ERROR"
| LIMIT 100;
FOR log IN logs LOOP
PRINT log.message;
END LOOP;
Assigning Values¶
Use SET to assign values:
Constants¶
Use CONST for immutable values:
Type Conversion¶
Implicit conversion happens in many cases:
Null Handling¶
DECLARE maybe_null STRING; -- NULL by default
-- Null coalescing
SET value = maybe_null ?? 'default';
-- Safe navigation
SET name = user?.profile?.name;
Scope¶
Variables are scoped to their procedure: