我必须在Oracle sql表中插入几行。像
insert into table (col1, col2, col_unique_guid) select col1, "bla", sys_guid() from source_table;
不幸的是,sys_guid()对于所有行都是相同的 - 有没有一种方法可以在序列上为每一行插入单独的guid?
答案 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;