【发布时间】:2014-02-08 20:26:11
【问题描述】:
我的印象是它不能,但后来我遇到了这两个示例(使用 Oracle XE 和 SQL Developer):
示例 1 - 执行没有错误
insert into regions (region_id, region_name)
values ((select max(region_id)+1 from regions), 'Great Britain');
示例 2 - 返回错误(如下所示)
insert into regions (region_id, region_name)
values (select region_id, region_name from regions);
错误:
Error starting at line 1 in command:
insert into regions (region_id, region_name)
values (select region_id, region_name from regions)
Error at Command Line:2 Column:9
Error report:
SQL Error: ORA-00936: missing expression
00936. 00000 - "missing expression"
*Cause:
*Action:
因此,它似乎还有更多内容。谁能解释在什么情况下可以/不可以使用VALUES 关键字包含子查询?
【问题讨论】:
-
我有一本 Oracle 书说...子查询可用于选择要插入的行,但不能在 INSERT 语句的 VALUES 子句中选择...是真的。但是,正如您在示例 1 中指出的那样,这不是真的。你可以在 values 子句中使用 subqeuries,就像上面展示的那样。
标签: sql subquery oracle-xe dml