当前位置: 代码迷 >> Oracle开发 >> pl/sql中施用insert into select复制一个表,并且主键使用序列生成的值
  详细解决方案

pl/sql中施用insert into select复制一个表,并且主键使用序列生成的值

热度:90   发布时间:2016-04-24 07:26:11.0
pl/sql中使用insert into select复制一个表,并且主键使用序列生成的值?
就是从另外一个表中复制几个字段的值到当前表,但是当前表的主键值使用序列生成,这个语句该怎么写?
SQL code
insert into bt_field_enum(fld_enum_id,fld_exp_id,parent_enum_value,enum_value,enum_name,enum_level,enum_desc,enum_status,use_frequency,enum_order) values select (select seq_fld_enum_id.nexval from dual) as fld_enum_id,205,parent_enum_value,enum_value,enum_name,enum_level,enum_desc,enum_status,use_frequency,enum_order from jsyd.t_field_enum


大家看我这个语句,报错为“ORA-00936 缺失表达式”

------解决方案--------------------
insert into bt_field_enum(fld_enum_id,fld_exp_id,parent_enum_value,enum_value,enum_name,
enum_level,enum_desc,enum_status,use_frequency,enum_order) select seq_fld_enum_id.nexval as ,205,parent_enum_value,enum_value,enum_name,enum_level,enum_desc,enum_status,
use_frequency,enum_order from jsyd.t_field_enum


INSERT INTO的时候,可以直接使用SELECT ,不使用VALUES



------解决方案--------------------
不需要用子查询,直接 seq_fld_enum_id.nexval 就可以了。
------解决方案--------------------
insert into bt_field_enum
(fld_enum_id,fld_exp_id,parent_enum_value,enum_value,enum_name,
enum_level,enum_desc,enum_status,use_frequency,enum_order)
select seq_fld_enum_id.nexval,205,parent_enum_value,enum_value,enum_name,enum_level,enum_desc,enum_status,
use_frequency,enum_order from jsyd.t_field_enum
------解决方案--------------------
看看这个,自己测试下
insert into bt_field_enum(fld_enum_id,fld_exp_id,parent_enum_value,enum_value,enum_name,
enum_level,enum_desc,enum_status,use_frequency,enum_order) 
select seq_fld_enum_id.nexval,205,parent_enum_value,enum_value,enum_name,
enum_level,enum_desc,enum_status,use_frequency,enum_order 
from (select parent_enum_value,enum_value,enum_name,enum_level,enum_desc,enum_status,
use_frequency,enum_order 
from jsyd.t_field_enum);
  相关解决方案