在Oracle中,只有DML才會開啟一個事務。也就是說Insert,Update,Delete這些都會開啟一個事務,並且該事務在commit/rollback/ddl命令時會自動結束。
1.擷取特定資料的前幾位
select substr(recordid,1,2) from syscode where rownum < 5;
2.擷取指定條數的資料
select recordid from syscode where rownum < 5;
3.擷取指定格式的ID
function getsmssendid return varchar2 is
v_getsmssendid smssend.smssendid%type;
begin
select 'SMSSEND' || lpad(seq_smssend.nextval, 13, '0')
into v_getsmssendid
from dual;
return v_getsmssendid;
end;
類似這樣的效果: SMSSEND0000000000001
4.去掉資料裡的tab鍵
update temp_lj set ac10 = replace(ac10,chr(9),'');
commit;
5.更新,修改表中資料
select a.*,rowid from a
select a.* from a for update
以上兩種都可以修改資料,但是第二種會鎖表
6.控制查詢匯出的數量個數
View Code
1 --function中的部分代碼 2 v_num smallint default 10;--查詢就只能查詢10條 3 begin 4 if p_type = 'B' then--即匯出,就可以查出所有 5 v_num := 0; 6 end if; 7 v_NT_test := NEW nt_test(); 8 9 for c_ag in (select a.agentid,10 a.recommendagentid,11 getagentstatus(a.agentstatus) agentstatus,12 a.agentcode,13 a.agentname,14 A.agentlevelcode,15 a.hiredate,16 a.casemainid17 from agenthis a18 where a.bizyearmonth = p_month19 and a.agentstatus = 'AGENTSTATUS_09'20 and a.branchid = p_branchid21 and (a.agentcode = p_agentcode or p_agentcode is null)22 and (rownum <= v_num or v_num = 0)23 24 ) loop
7.資料匯入到excel時,長數字會出現科學計演算法(即省略部分數字不顯示)
excel中出現科學計演算法的那一列,將那列選中,滑鼠右擊選中設定儲存格樣式,將常規改成文本就OK了
8.日期
select to_char(sysdate, 'YYYY' ) || '年' ||
to_char(sysdate, 'MM' ) || '月' ||
to_char(sysdate, 'DD' ) || '日' 日期
from dual
9.查詢出資料,丟失了小數點前面的0,例如本來應該是0.0508,查出卻是 .0508
select to_char('.0508','fm90.0000') from dual; 可解決
結果:0.0508 (說明:.0508就是表中的一列數,在資料庫存的時候就是這樣的)
fm9999999900.99,表示整數部分最多10位,00表示小數點前面有兩個0,小數部分最多2位(並且會自動四捨五入),fm表示去掉轉位字串後前面的空格,不加fm,0.0508前面會有空格。
3.擷取指定格式的ID
function getsmssendid return varchar2 is
v_getsmssendid smssend.smssendid%type;
begin
select 'SMSSEND' || lpad(seq_smssend.nextval, 13, '0')
into v_getsmssendid
from dual;
return v_getsmssendid;
end;
類似這樣的效果: SMSSEND0000000000001