Я пытаюсь написать простой запрос, чтобы получить порядковый номер.
EXEC SQL SELECT NEXT VALUE FOR @SOP_SEQ INTO :SEQ ;
EXEC SQL SELECT NEXT VALUE FOR @SOP_SEQ INTO :SEQ FROM @SOP_SEQ;
С первой строкой кода я получаю сообщение об ошибке еще до того, как смогу скомпилировать: Токен SQL0104 недействителен. Действительные токены: , ОТ
Я попробовал вторую строку кода, и я получаю эту ошибку при компиляции: SQL1103 Позиция 57 Определения столбцов для таблицы @SOP_SEQ в *LIBL не найдены.
Может ли кто-нибудь указать мне, что я делаю неправильно?
Я открываю веб-форму и хочу создать только порядковый номер. Я не делаю ничего другого в данный момент. Означает ли это, что я должен сделать выбор в таблице, даже если мне не нужны данные?
Порядковый номер должен откуда-то браться, и как только вы получите следующее значение, где вы собираетесь хранить его для будущих значений?
Да, порядковый номер исходит из Create Sequence, он работает как область данных. Все, что я пытаюсь сделать, это открыть веб-форму и получить порядковый номер. Я сохраню значение позже.
SELECT ... INTO
нужна строка для запуска, а вы ее не предоставляете, поэтому у вас нет набора результатов.
Есть два способа сделать то, что вы хотите.
Использование SELECT INTO
с SYSDUMMY1
select next value for @sop_seq
into :seq
from sysibm/sysdummy1;
Или, лучше, используя VALUES INTO
, который не нуждается в ссылке на SYSDUMMY1
values next value for @sop_seq
into :seq;
тлдр;
SYSIBM/SYSDUMMY1
- это файл каталога с одной записью, и до того, как VALUES INTO
стал доступным, он обычно использовался для извлечения вычисленных значений в набор результатов, когда требуется одна строка, и нет реальной ссылки на таблицу, которая применяется (как в вашей ситуации здесь) . Этот метод все еще используется, но я бы посоветовал вместо него использовать VALUES INTO
, так как нет необходимости в искусственном предложении FROM
.
Когда я использую второй предложенный вами вариант, я получаю следующую ошибку: Объект SQL1105 @SOP_SEQ в *LIBL не найден
@Tretiak, по-видимому, любая библиотека (схема), в которой находится объект последовательности, отсутствует в вашем списке библиотек. Либо добавьте его в *LIBL, либо уточните в операторе for mylib.@sopseq
Хорошо, спасибо, ребята. Это именно то, что я искал. Я также обнаружил, что столбцы идентификаторов — это еще один вариант, который я могу использовать в будущем.
@jmarkmurphy, я хотел написать тебе личное сообщение, но не вижу возможности сделать это. Мне было любопытно узнать, используете ли вы PHP-фреймворк или ядро PHP?
В настоящее время я не использую PHP, но если бы я им пользовался, я бы использовал фреймворк для новой работы.
Откуда вы берете порядковый номер
FROM
(подсказка)... Обычный синтаксис SQL включаетSelect ... column1, column2 ... FROM tablename
.