分类: Oracle
2008-04-03 23:29:39
标量子查询的引入是 Oracle9i中最显著的一个变化。以前 Oracle 允许在 SQL 语句的 FROM 子句中使用 SQL 子查询,Oracle9i扩展了这一功能,允许在 SELECT 子句中使用 SQL 子查询。
例如下面的这段代码。注意嵌入在外层SELECT子句和FROM子句中的SELECT语句。
Select
(select max(salary) from emp) highest_salary,
emp_name,
(select avg(bonus) from commission) avg_commission,
dept_name
from
emp,
(select dept_name from dept where dept = 'finance')
;
从这个例子中我们可以看到 Oracle 允许在任何 SQL 语句的 SELECT 子句中包含单行子查询。这一功能在一些麻烦的查询中会很有用处,这一特点值得 Oracle9i开发者注意。
标量子查询也能用于数据操纵语言(DML)。看下面的例子,在 INSERT 语句中包含有一个子查询:
insert into
Customer
(name, max_credit)
values
('Sam', select max(credit) from credit_table where name = 'SAM');
从这里我们可以看出标量子查询对于提高 INSERT 和 UPDATE 语句的效率可能会很有帮助,因为如果不用标量子查询的话,就必须在WHERE子句中使用子查询才能得到所需的数据。