Inlining mockup data

You can inline data in the query by using the BIND_VALUES() or BIND_SQL() functions for all features.

WITH
    ID := INPUT(BIGINT),
    NAME := INPUT(VARCHAR),
    HELLO_MESSAGE := 'Hello, ' || NAME || '!',
SELECT
    ID,
    HELLO_MESSAGE
FOR
    (ID, NAME) := BIND_VALUES(ARRAY[ROW(1, 'Alice'), ROW(2, 'Bob'), ROW(3, 'Charlie')]);
sql
WITH
    ID := INPUT(BIGINT),
    NAME := INPUT(VARCHAR),
    HELLO_MESSAGE := 'Hello, ' || NAME || '!',
SELECT
    ID,
    HELLO_MESSAGE
FOR
    (ID, NAME) := BIND_SQL(SELECT id, name FROM (VALUES(1, 'Alice'), (2, 'Bob'), (3, 'Charlie')) as t(id, name));
sql

However, it's a better practice to use BIND_SQL() for the key, and mockup data in an EXTERNAL_SQL() for the value, using the SQL command VALUES() or UNNEST() array of rows depending on the backend.

WITH
    ID := INPUT(BIGINT),
    NAME := EXTERNAL_SQL(
        `SELECT id, name FROM (VALUES(1, 'Alice'), (2, 'Bob'), (3, 'Charlie')) as t(id, name)`
        ON `SELF.id = %ID`
        AS ROW(ID BIGINT, NAME VARCHAR)
    )[NAME],
    HELLO_MESSAGE := 'Hello, ' || NAME || '!',
SELECT
    ID,
    HELLO_MESSAGE
FOR
    ID := BIND_VALUES(ARRAY[1,2,3]);
sql

See the backend particularities guide for more details.

Last update at: 2025/12/05 16:03:14
Last updated: 2025-12-05 16:07:55