【发布时间】:2010-10-14 12:52:02
【问题描述】:
使用 Informix,我创建了一个临时表,我试图从一个 select 语句中填充它。在此之后,我想进行更新,以填充临时表中的更多字段。
所以我正在做类似的事情;
create temp table _results (group_ser int, item_ser int, restype char(4));
insert into _results (group_ser, item_ser)
select
group_ser, item_ser, null
from
sometable
但是你不能选择null。
例如;
select first 1 current from systables
有效但
select first 1 null from systables
失败!
(不要让我开始解释为什么我不能像“选择当前”这样没有指定表的 SQL Server!)
【问题讨论】:
-
仅供参考 - 我讨厌 informix!
-
你不必爱它,但你最好理解它。 RDBM 允许用户从查询 (DESCRIBE) 中获取所有相关信息。这包括根据查询获取结果集中列的数量和类型。这就是允许完全动态 SQL 的原因(应用程序可以自行适应用户动态编写的查询)。您的查询的问题是 NULL 根据定义是无类型的。所以你的查询是不允许的。我很想知道其他 RDBM 是如何处理这个问题的……可能他们设置了默认类型……只需转换你的 NULL 就可以了。问候。