在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...