如何为oracle多行插入生成guid

时间:2017-05-19 14:36:14

标签: sql oracle insert guid

我必须在Oracle sql表中插入几行。像

insert into table (col1, col2, col_unique_guid) select col1, "bla", sys_guid() from source_table;

不幸的是,sys_guid()对于所有行都是相同的 - 有没有一种方法可以在序列上为每一行插入单独的guid?

1 个答案:

答案 0 :(得分:0)

我无法重现您的问题,但在某些情况下,oracle可能会优化'函数调用查询的方式是在查询执行期间只调用一次函数。

您可以通过编写包装函数并将rownum传递给它来强制Oracle为每一行调用函数:

CREATE OR REPLACE function get_my_guid(i number) return raw
is
begin
  return sys_guid();
end;
/

e.g:

insert into test_guid (col1, col2, col_unique_guid) select col1, col2, get_my_guid(rownum) from test_guid_src;