在Oracle中使用Guid

2021-09-07 21:05:40 字數 1534 閱讀 9060

在oracle中可以用sys_guid()來生成乙個guid,相當於mssql中的newid()。

在oracle9i和oracle 10g 裡sys_guid產生得到的資料是32 位的,如:234e45f0077881aae0430aa3034681aa

但oracle中的guid與mssql中的guid格式不完全相同。

將oracle中的guid分割成為 windows系統 objectid 的格式: ,下面給出兩種解決方法:

方法一:利用substr進行分割,非常簡單,具體**如下:

/**

* 建立系統object id 格式的字串,返回的結果如下:

*/ function createguid return varchar2

is guid varchar(64);

begin

guid := sys_guid();

return

'';

end createguid;

方法二:利用concat函式進行連線,具體**如下:

create or replace function aildm_get_guid

return char

is v_guid              char (36);

v_guid_part_one     char (8);

v_guid_part_two     char (4);

v_guid_part_three   char (4);

v_guid_part_four    char (4);

v_guid_part_five    char (12);

begin

select sys_guid ()

into v_guid

from dual;

v_guid_part_one := substr (v_guid, 0, 8);

v_guid_part_two := substr (v_guid, 8, 4);

v_guid_part_three := substr (v_guid, 12, 4);

v_guid_part_four := substr (v_guid, 16, 4);

v_guid_part_five := substr (v_guid, 20, 12);

v_guid :=

concat

(concat

(concat

(concat (concat (concat (concat (concat (v_guid_part_one,

'-'),

v_guid_part_two

), '-'

), v_guid_part_three

), '-'

), v_guid_part_four

), '-'

), v_guid_part_five

); return (v_guid);

end aildm_get_guid;

在Oracle中使用SYS CONNECT BY

適用於在oracle中的遞迴查詢中,適用sys connect by path對每個節點中的資料進行拼接 例如在本案例中,查詢中lpad glid的資料後,將每一級節點的lpad glid的資料進行拼接,放在每一級上。例如 select xh,glid,level,lpad glid,3,0 lpa...

在oracle中使用自增字段

大家都知道,oracle是不支援auto increment欄位的,但可以通過建立sequence物件來使用自增序列,語法是 sql create sequence seq subs id increment by1 start with 1 maxvalue 10000000000 nocycle...

在Oracle過程中使用游標

create or replace procedure ss c002 tm14to13 p errcode out number,p errtext out varchar2 is isbn轉換條碼,14位錯誤的轉換成13位正確的 yc2008 04 18 cursor c gckc is sel...