Путаница в документации IBM Informix для операторов вставки - PullRequest
0 голосов
/ 11 июня 2018

Я сейчас использую Informix 12.10 FC6.Я нашел два фрагмента документации, которая кажется противоречивой в предложении VALUES оператора вставки.Оба документа взяты из IBM Informix документации.Может кто-нибудь объяснить разницу и почему они не противоречат друг другу.Часть, которая меня смущает, это то, что кажется, что выражения не могут быть добавлены к предложению VALUES, и каждый делает это.Я ищу разъяснения о том, чего мне не хватает.

Вот ссылки:

Ссылка 1

Ссылка 2

1 Ответ

0 голосов
/ 11 июня 2018

Учебник по Informix SQL - Вставка строк - Возможные значения столбцов - иначе «Ссылка 1» в вопросе - начинается с выражения:

Предложение VALUES принимает только константузначения, а не общие выражения SQL.

Руководство Informix по SQL: синтаксис - оператор INSERT - предложение VALUES - в данном вопросе «ссылка 2» - полностью охватывает оператор INSERTвключая его использование в коде ESQL / C (встроенный SQL в C) и в коде SPL (язык хранимых процедур).В нем перечислены дополнительные параметры для того, что можно использовать, например переменные хоста (помеченные «только для ESQL / C» и «расширение Informix»).В нем также перечислены такие параметры, как «Выражение» и «Выражение константы».

В учебном пособии слишком упрощено то, что разрешено.

Руководство по синтаксису является более полным и более правильным.Существуют ограничения на то, что вы можете использовать в предложении VALUES, но они более обширны, чем указывает простое описание в учебнике, - но это учебник.Когда дело доходит до деталей, каждое значение в предложении VALUES является отдельным значением, возможно, результатом оценки функции или какого-либо другого выражения.Существуют строгие ограничения на форму оператора SELECT, который можно использовать, но их можно использовать:

create table x(i integer not null primary key);
insert into x values(1024);
insert into x values((select max(i)+1 from x));

Требуются круглые скобки вокруг SELECT, а также круглые скобки вокруг предложения VALUES, поэтому двойные скобки необходимы.

...