What could be the reason for disallowing a sub query in the values clause? For example

SQL&gt; create table dates(d date);

Table created.

SQL&gt; insert into dates select sysdate from dual;

1 row created.

SQL&gt; select * from dates;

D
---------
28-MAY-11

SQL&gt; insert into dates (d) values (select sysdate fom dual);
insert into dates (d) values (select sysdate fom dual)
                              *
ERROR at line 1:
ORA-00936: missing expression


SQL&gt;
If you want to use a SELECT statement where only a single value is allowed you need to put that SELECT statement into brackets:

insert into dates (d)
values
( (select sysdate from dual) )


That could be extended for multiple columns:

insert into dates 
(
  id, 
  d,
  other_column
)
values
( 
  some_sequence.nextval, 
  (select sysdate from dual), 
  (select max(some_col) from other_table)
)


You just need to make sure that the SELECT returns exactly one row and exactly one column