Следующее значение IBM SQL для проблемы

Я пытаюсь написать простой запрос, чтобы получить порядковый номер.

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 не найдены.

Может ли кто-нибудь указать мне, что я делаю неправильно?

Откуда вы берете порядковый номер FROM (подсказка)... Обычный синтаксис SQL включает Select ... column1, column2 ... FROM tablename.

SS_DBA 24.05.2019 20:12

Я открываю веб-форму и хочу создать только порядковый номер. Я не делаю ничего другого в данный момент. Означает ли это, что я должен сделать выбор в таблице, даже если мне не нужны данные?

Tretiak 24.05.2019 20:20

Порядковый номер должен откуда-то браться, и как только вы получите следующее значение, где вы собираетесь хранить его для будущих значений?

SS_DBA 24.05.2019 20:25

Да, порядковый номер исходит из Create Sequence, он работает как область данных. Все, что я пытаюсь сделать, это открыть веб-форму и получить порядковый номер. Я сохраню значение позже.

Tretiak 24.05.2019 20:30
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
4
444
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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 24.05.2019 21:25

@Tretiak, по-видимому, любая библиотека (схема), в которой находится объект последовательности, отсутствует в вашем списке библиотек. Либо добавьте его в *LIBL, либо уточните в операторе for mylib.@sopseq

Charles 24.05.2019 23:40

Хорошо, спасибо, ребята. Это именно то, что я искал. Я также обнаружил, что столбцы идентификаторов — это еще один вариант, который я могу использовать в будущем.

Tretiak 28.05.2019 14:15

@jmarkmurphy, я хотел написать тебе личное сообщение, но не вижу возможности сделать это. Мне было любопытно узнать, используете ли вы PHP-фреймворк или ядро ​​PHP?

Tretiak 28.05.2019 14:21

В настоящее время я не использую PHP, но если бы я им пользовался, я бы использовал фреймворк для новой работы.

jmarkmurphy 28.05.2019 14:25

Другие вопросы по теме