我目前正在使用800px
。我发现两个似乎与插入语句的Informix 12.10 FC6
子句相矛盾的内容。这两份文件均来自VALUES
IBM
文件。任何人都可以解释这些差异以及为什么它们不相互矛盾。困惑我的部分似乎是说表达式不能添加到VALUES子句中,而且可以添加。
我正在寻找一些关于我所缺少的内容的澄清。
以下是链接:
答案 0 :(得分:1)
Informix SQL Tutorial – Insert rows — Possible column values - 在问题中也称为“链接1” - 从声明开始:
VALUES子句只接受常量值,而不是一般的SQL表达式。
Informix Guide to SQL: Syntax — INSERT statement — VALUES clause - 在问题中也称为“链接2” - 全面涵盖INSERT语句,包括其在ESQL / C(嵌入式SQL in 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子句周围的括号,因此需要加倍括号。