Oracle 11G 进阶语法

--查找数据库名字
select name from v$database ;
--根据关键字查找对应的存储过程
select distinct name from USER_SOURCE where type = 'PROCEDURE' and text like '%要查找的内容%';

SELECT * FROM USER_SOURCE T WHERE UPPER(T.TEXT) LIKE UPPER('%订单需求数%')
--此语句是查看数据库的死锁
select 'alter system kill session '''||sess.sid||','||sess.serial#||''';'
from v$locked_object lo,dba_objects ao,v$session sess
where ao.object_id = lo.object_id
and lo.session_id = sess.sid;

--杀死进程
alter system kill session '28,32460';
--查找表空间使用情况
select D.TABLESPACE_NAME,
       ROUND(D.SPACE/(1024*1024*1024),2) 
       SPACE,ROUND(D.MaxSpace/(1024*1024*1024),2),
       ROUND(F.Free_SPACE/(1024*1024*1024),2) FREE_SPACE,
       ROUND((D.SPACE - nvl(F.Free_SPACE,0))/decode(D.MaxSpace,0,null,D.MaxSpace) * 100,2) Use_Rate 
from
(SELECT TABLESPACE_NAME,SUM(BYTES) SPACE,SUM(BLOCKS) BLOCKS,SUM(MAXBYTES) as MaxSpace 
FROM DBA_DATA_FILES t
GROUP BY TABLESPACE_NAME) D,
(SELECT TABLESPACE_NAME,sum(BYTES) as Free_SPACE FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F 
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+); 
--查找每个表对接的数据量
select table_name,num_rows from user_tables order by num_rows desc;
--存储过程调试
declare 
r_test varchar2(200); --输出参数

begin
 	SPSOUDF_PURCHASE_PRICE('ZPRK19091900015','1','M00507','cn',r_test);
 	dbms_output.put_line(r_test); 
end;

--Server SQL 2008 游标通用语法
declare @a varchar(2000),@b varchar(2000),@c int 
  declare Cursor_name cursor 
	for  
	select a,b,c from table 	
    open Cursor_name
          fetch next from Cursor_name into @a,@b,@c     
	  while @@FETCH_STATUS =0 
            begin
                               
               fetch next from Cursor_name into @a,@b,@c               
            end            
	close Cursor_name
 deallocate Cursor_name


--Oracle 11G 游标通用语法
declare 
r_a    varchar2(50);
r_b    varchar2(50);
r_c    varchar2(50);

declare cursor cursor_name is
       select a,b,c from table; 
begin
  open cursor_name;
  loop
    fetch cursor_name into r_a,r_b,r_c;
    exit when cursor_name%notfound;
    
    	begin

    	end;
  end loop;
  close order_cur;
end;
--函数wm_concat(列名),该函数可以把列值以","号分隔起来,并显示成一行

select t.orderno 订单号,WM_CONCAT(t.orderlineno) 行号, 
       WM_CONCAT(t.location||'('||t.qty||')') "分配库位(数量)"
from act_allocation_details t where t.orderno='ZPCK20060403044' group by t.orderno

   

--listagg() WITHIN GROUP () 该函数可以实现按条件实现列转行

select listagg(t.sku||' '||bs.sku_group2||' '||bs.sku_group3||' '||t.qty||' '||t.location,';') WITHIN GROUP (order by t.sku)
from act_allocation_details t left join bas_sku bs on t.sku=bs.sku
where t.orderno='ZPCK20060403044' 

--oracle 用一张表的更新另外一张表某个字段

select * from A123 for update 

delete from A123

MERGE INTO bas_sku b
   USING A123 a
    ON ( a.sku = b.sku)                    
WHEN MATCHED
THEN
  UPDATE SET b.Reservedfield07 = a.jkm 
--根据某个分隔符取对应的值

CREATE OR REPLACE FUNCTION Get_UDFA_Parameter
(
IN_List    in varchar2,--要分隔的字符串
IN_SplitOn in varchar2,--分隔符
IN_num1    in int
)
return varchar2 is  Result varchar2(2000 char);
r_i int;
r_j int;
r_p int;
BEGIN
  r_p := lengthb(IN_SplitOn);
  if IN_num1 - 1 > 0 then
     r_i := instrb(IN_List, IN_SplitOn, 1, IN_num1 - 1);
  else
     r_i := 0;
  end if;

  r_j := instrb(IN_List, IN_SplitOn, 1, IN_num1);
  if r_j = 0 then
    r_j := lengthb(IN_List) + r_p;
  end if;
  result := substrb(IN_List, r_i + r_p, r_j- r_i - r_p);
  return(Result);
end;

--例子
select Get_UDFA_Parameter('A#B#C','#',1) from dual

oracle 物化视图

ON DEMAND指物化视图在用户需要的时候进行刷新,可以手工通过DBMS_MVIEW.REFRESH等方法来进行刷新,也可以通过JOB定时进行刷新,即更新物化视图,以保证和基表数据的一致性;
而ON COMMIT是说,一旦基表有了COMMIT,即事务提交,则立刻刷新,立刻更新物化视图,使得数据和基表一致。


CREATE MATERIALIZED VIEW SEC_SYS_USER
REFRESH FAST ON COMMIT
AS
SELECT "SYS_USER"."USER_ID" "USER_ID","SYS_USER"."USER_NAME" "USER_NAME","SYS_USER"."PASSWORD" "PASSWORD",
"SYS_USER"."ACTIVE_FLAG" "ACTIVE_FLAG","SYS_USER"."SALT" "SALT","SYS_USER"."ROLE_ID" "ROLE_ID",
"SYS_USER"."ORG_ID" "ORG_ID","SYS_USER"."PRICEACCESS" "PRICEACCESS",
"SYS_USER"."USER_LEVEL" "USER_LEVEL","SYS_USER"."USER_TITLE" "USER_TITLE","SYS_USER"."USER_TEL" "USER_TEL",
"SYS_USER"."USER_ZIP" "USER_ZIP","SYS_USER"."USER_ADDRESS1" "USER_ADDRESS1","SYS_USER"."USER_ADDRESS2" "USER_ADDRESS2",
"SYS_USER"."USER_ADDRESS3" "USER_ADDRESS3","SYS_USER"."USER_ADDRESS4" "USER_ADDRESS4",
"SYS_USER"."USER_EMAIL" "USER_EMAIL","SYS_USER"."ADDTIME" "ADDTIME","SYS_USER"."ADDWHO" "ADDWHO",
"SYS_USER"."EDITTIME" "EDITTIME","SYS_USER"."EDITWHO" "EDITWHO","SYS_USER"."GLOBALDATEFORMAT" "GLOBALDATEFORMAT",
"SYS_USER"."CARDNO" "CARDNO" FROM "DBSEC"."SYS_USER" "SYS_USER";

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值