Introduction

Variables and constants store values you can later use anywhere in your query.

Basic Usage

Variables are placeholders that can be assigned and reassigned values throughout the SQL code.

To assign a value to a variable, use the equal sign = followed by the value.

{name = 'foo'}
{age = 30}
{sum = 2 + 4} 

For example, take a look at the following Latitude Query, and what will actually be compiled and executed in the database:

/* Defining the variable and SQL code */

{sum = 2 + 4} 

SELECT *
FROM table
WHERE id = {sum}

Incrementing

Variables can be modified using operations such as addition.

{counter = 10} /* Define the variable */

SELECT *
FROM table
WHERE id != null
AND (
    {#each [1, 2, 3] as products, index}
        /* Print the value of the variable */
        id = {counter}

        /* Add an 'OR' at the end to every element except the last one */
        {#if index + 1 < products.length}
            OR
        {/if}

        /* Increment the value of the variable */             
        {counter = counter + 10}
    {/each}
)

Constants

Constants are similar to variables but, once defined, their value cannot be changed. Also the main syntax difference is constants are defined using the @const keyword.

{@const name = 'value'}
Your Query
{@const birthday = '2000/02/28'} /* Defined a constant */

SELECT *
FROM table
{#if birthday = '2000/02/28'}
    {birthday = '2024/12/31'} /* Reassigning the constant */
{/if}
Output
'!Error: Cannot reassign a constant'

Scope

Global

Variables defined outside of any logic blocks are considered global and can be modified and accessed throughout the entire code.

{var1 = 'latitude'}

Variables can be accessed and modified anywhere in the code.

{name = 'latitude'} /* Define the variable */

SELECT *
FROM table
WHERE name = {name}
{name = 'longitude'} /* Reassign the variable */
OR name = {name}

Local Variables

Variables defined within logic blocks are local to that block. They cannot be accessed outside the block in which they are defined.

{#if condition}
    {var2 = 'localValue'} /* Accessible only within this block */
{/if}