Я использую h2 для генерации некоторых данных для тестов.
У меня есть оператор выбора, который выбирает случайную строку в таблице.
В операторе выбора я установил переменную с именем «K» с помощью функции SET (http://h2database.com/html/functions.html#set).
Во втором операторе в том же сеансе я пытаюсь прочитать / получить текущее значение переменной.
Чтобы получить воспроизводимый результат, я использую SYSTEM_RANGE (1,10) в предложении select ниже. Я использую веб-консоль h2 для выполнения операторов.
Если я установлю переменную, как в следующем выражении
SET @K = SELECT X FROM SYSTEM_RANGE(1,10) ORDER BY RANDOM() LIMIT 1;
и я выполняю следующий оператор VALUES
VALUES(@K)
работает как положено. Переменная K была установлена на случайное значение. Последующие исполнения обоих этих операторов показывают, что значение переменной изменяется случайным образом.
Я хотел бы назначить переменную в операторе выбора. Установка переменной, как показано выше, не помогает в достижении моей цели.
Это не работает, как ожидалось
SELECT SET(@K,X) FROM SYSTEM_RANGE(1,10) ORDER BY RANDOM() LIMIT 1;
VALUES(@K); -- value of K is different than result of above select
-- subsequent executions show that the result of the select changes as expected
— but the result of the values statement and thus the value of K does not change
Я ожидаю, что результат оператора select будет таким же, как и значение переменной, но это не так. Последующие исполнения обоих операторов показывают, что операторы выбора дают случайно выбранные результаты, но оператор значений предоставляет одно и то же / постоянное целое число.