将序列值插入新表ORACLE

时间:2016-04-26 02:42:34

标签: sql oracle sql-insert

我无法弄清楚如何从包含来自不同表的序列的记录中将数据插入到新表中。具体来说,我有一个名为customers_f的表,我正在尝试按照

的方式做一些事情
 INSERT INTO customers_f(billing_account_num)
 VALUES(billing_account_num.CURRVAL);

由于序列与bill_tos_f表有关,因此无效。如何设置将billing_account_num的{​​{1}}值放入我的'customers_f'表中?

下面我发布了bill_tos_f中的信息,包括表格本身,处理bill_tos_f的序列和billing_account_num的插入。提前谢谢!

bill_tos_f

1 个答案:

答案 0 :(得分:0)

在Oracle中,序列不依赖于列,它们是独立的对象。以下SQL语句应该适合您。

INSERT INTO customers_f(billing_account_num)
  VALUES(bill_tos_f_bill_acc_num_seq.CURRVAL);

但是,如果您可以使用PLSQL块,那会更好。

DECLARE
   v_seqval NUMBER;
BEGIN
  v_seqval := bill_tos_f_bill_acc_num_seq.NEXTVAL;

  INSERT INTO bill_tos_f(billing_account_num, bill_to_first_name, bill_to_middle_name, bill_to_last_name, bill_to_street, bill_to_city, bill_to_state, bill_to_zip, bill_to_country)
  VALUES(v_seqval, 'mike', 'row', 'smith', '983 Circle Point', 'Atlanta', 'GA', '3825', 'USA');

  INSERT INTO customers_f(billing_account_num)
  VALUES(v_seqval);

END;