2017-05-19 37 views
0

Oracle SQLテーブルに複数の行を挿入する必要があります。oracle複数行の挿入のGUIDを生成する方法

残念ながら(SYS_GUID
insert into table (col1, col2, col_unique_guid) select col1, "bla", sys_guid() from source_table; 

)のように、すべての行で同じです - 行ごとにindiviual GUIDを挿入するかもしれシーケンスを超える方法はありますか?

+3

をあなたがこれを読んでいましたか? http://stackoverflow.com/questions/3037462/how-to-generate-a-guid-in-oracle guidsは非常に似ていますが、それらは異なっています。ちょうど確かめるために、もう一度それをチェックしてください! – RMH

+0

'col_unique_guid'にユニークな制約や主キーがありますか? – APC

+0

生成した結果セットを、同じ結果で表示できますか? – Seyran

答えて

0

私は問題を再現できませんでしたが、いくつかの状況では、oracleは、クエリの実行中に関数が1回だけ呼び出されるように、クエリで関数呼び出しを「最適化」することがあります。

あなたはラッパー関数を書き、それにROWNUMを渡すことで、各行のための関数を呼び出すためにOracleを強制することができます。

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

例えば:

insert into test_guid (col1, col2, col_unique_guid) select col1, col2, get_my_guid(rownum) from test_guid_src; 
関連する問題