1 顯示操作時間
set timing on;
2 nvl(comm,0),如果COMM為空白,則顯示0,否則用COMM顯示
3 當 groupy,having,order by同時存在時,必須是先出現group by,然後
是having,最後是order by
4 select * from (select a1.*,rownum rn from (select * from scott.emp) a1 where rownum<=10) where rn>=6(不支援rownum
的2次使用)
如果指定查詢列,只需修改最底層的(select * from scott.emp)
5 insert into kkk (a,b,c) select a,b,c from emp;(即可適合大批量資料錄入)
6 設定唯讀事務
set transcation read only;則A設定了唯讀事務的話,則在設定後
的新的DML則無效果
7 匯出表
匯出自己的表
exp userid=scott/xxx@xxx tables=(a,b) file=c:\xxx.dmp;
匯出其他的方案
exp userid=system/xx@xxx tables=(scott.a,scott.b) file=c:\xxx.dmp
只匯出表結構,不導資料
exp userid=system/xx@xxx tables=(scott.a,scott.b) file=c:\xxx.dmp rows=n;
如果要匯出大表,則加參數direct=y
匯出方案
exp userid=system/xx@xxx owner=(scott,system) file=c:\xxxx.dmp;
8 資料字典視圖
包括user_xxx,all_xxx,dba_xxx三類
9 查看使用者的角色
select * from dba_role_privs where GRANTEE='SCOTT';
查看某個角色所包含的系統許可權
select * from dba_sys_privs where grantee='connect'
查看某個角色所包含的對象許可權
select * from dba_tab_privs where grantee='connect'
查看某個使用者有多少角色
select * from dba_role_privs where grantee='使用者名稱';
10 分頁的預存程序
create or replace package tespackage as
type test_cursor is ref cursor;
end testpackage;
create or replace procedure fenye
(tableName in varchar2,
Pagesize in number,
pageNow in number,
myrows out number,總記錄數
myPageCount out number 總頁數
p_cursor out tespackage.test_cursor --返回的記錄集
)
is
v_sql varchar2(10000);
v_begin number:=(pageNow-1)*Pagesize+1;
v_end number:= pageNow*Pagesize;
begin
v_sql:='select * from (select t1.*,rownum rn from (select * from '||tableName
||') t1 where rownum<='||v_end||') where rn>='||v_begin;
open p_cursor for v_sql;
--計算myrows和mypagecount
v_sql:='select count(*) from'||tableName;
execute immediate v_sql into myrows;
if mod(myrows,Pagesize)=0 then
myPageCount:=myrows/Pagesize;
else
myPageCount:=myrows/Pagesize+1;
end if;
close p_cursor;
end;
end;