Oracel 基本知識

ERP

ERPEnterprise Resource Planning 企业资源计划)简称,是上个世纪90年代美国一家IT公司根据当时计算机信息、IT技术发展及企业对供应链管理的需求,预测在今后信息时代企业管理信息系统的发展趋势和即将发生变革,而提出了这个概念。

一种ERP系统

ERP是针对物资资源管理(物流)、人力资源管理(人流)、财务资源管理(财流)、信息资源管理(信息流)集成一体化的企业管理软件。一个由 Gartner Group 开发的概念,描述下一代制造商业系统和制造资源计划MRP II)软件。它将包含客户/服务架构,使用图形用户接口,应用开放系统制作。除了已有的标准功能,它还包括其它特性,如品质、过程运作管理、以及调整报告等。特别是,ERP采用的基础技术将同时给用户软件和硬件两方面的独立性从而更加容易升级。ERP的关键在于所有用户能够裁剪其应用,因而具有天然的易用性。

 

OSB(oracle service bus)

学习Service Bus的第一个问题一定是,ALSB或者说OSB能做什么,或者说为什么需要OSB,对于这个问题的疑问在于在所谓的service-enable企业里,既然已经有了所谓的拥有建立Web Service的平台(如Weblogic应用服务器),那我们还缺什么东西呢?

   
OSB里对于这些疑问的第一个回答是:如果一个应用直接面对各个平台和应用服务器上创建的Web Service进行重用,会面临的一种情况是,当Web服务所在的平台有所变动(如IP地址),则所有调用该服务的应用都需要进行改动,所以OSB的第一个功能是“虚拟化企业里的服务”,也就是所有的服务会由OSB里的一个虚拟端点来表示,而应用只需要连接在OSB里的虚拟服务端点,由OSB在运行的时候来定位实际的服务在哪里,我个人以为这个观点并不能够让人信服,因为如果企业里使用一个Service Registry的话,对于服务的定位本身就是动态的,服务地址的改变可以由Service Registry进行反应。当然,无论是OSB来做这个虚拟化,还是Service Registry来做这个虚拟化,总需要有一个产品来做这个事情!


    
而另一种对于
OSB的描述可能更让人信服,就是OSB的目的就是ConnectEnrich&TransformDistribute

    Connect的含义是OSB会提供多种协议的接入方式,如对于数据库,OSB会提供比如DBAdapter的接入的手段,对于JMSOSB会提供JMS Adapter接入的手段,甚至对于ERP等应用产品,OSB也会提供相应的接入的手段,当然反过来也一样,也就是说OSB同样也可以针对以上的多种协议和数据源进行输出,所以Connect的一个含义是,“多协议接入,多协议输出”,这种含义也隐含着OSB可以进行协议转换,比如接入是emailSMTP协议,输出是http协议,而OSB需要处理SMTPhttp协议的转换,阐述这个含义的一张图是:


    Transform的另一个含义是应用A的输出是某一种格式,但是并不符合应用B的输入格式,则OSB需要对于格式也进行转换,让应用A也能够和应用B进行对话。
   
Distribute的含义则是OSB可以根据预先定义的规则去找到相应的服务,如符合规则A,则把消息发到服务Svc1,符合规则B,则把消息发到服务Svc2

    在所有这些描述中,实际上OSB的核心是一个消息处理引擎,对于应用的服务请求(典型的如SOAP消息),按照正确的规则去了解消息的内容,处理之后把消息发给正确的处理者,然后需要记录处理的结果(中间结果),再协调请求者和被请求者的关系,在两个或者多个本来没有设计为互相调用的服务间提供互相调用并监控他们的相互调用。

    因为一般而言在一个企业里总会使用IT发展不同时期的产品,它们可能都使用了不同的技术和协议,而这些不同时期的产品的相互对话是现代企业有效利用信息技术的一个必然结果,所以就出现了Service Bus这种可以和各种协议和技术打交道的产品,这就好像是为说不同语言人之间提供的一个翻译器,从而使沟通成为可能,并且为选择以后的产品提供了一个必须符合的最低标准!

 

三、财务资源管理

  此模块共分GL(总账)/AP(应付)/AR(应收)/FA(固定资产)四个小模块,统称finanical(财物模块)

、需要了解的基础语句。

1.游标(cursor

 

  使用cursor时请注意:

  一般情况下:

.打开游标   open cursor

.取游标    fetch cursor(name) into cursor_record

.关闭游标  close cursor

 

 

特殊情况:

  如果用for来使用游标,则不需要打开游标和关闭游标直接使用如下:

 

FOR cursor_record IN cursor LOOP

   cursor_record …

END Loop;

2.function/PROCEDURE/body

  请参考例子程序。

3. RANK(), dense_RANK(),ROW_NUMBER()的区别

E_ID

RANK

ROW_NUMBER

DENSE_RANK

10

1

1

1

1001

2

2

2

1001

2

3

2

1001

2

4

2

100101

5

5

3

100102

6

6

4

100103

7

7

5

100201

8

8

6

100202

9

9

7

100203

10

10

8

11

11

11

9

1101

12

12

10

110101

13

13

11

1104

14

14

12

1104

14

15

12

1104

14

16

12

 

数据结果 可以确认 rank 不连续的排序

ROW_NUMBER全部连续

DENSE_RANK重复的排序 连续排序

4Forall

declare

  cursor lc

  is

  select * from emp;

  type rec_ttype is table of a%rowtype index by pls_integer;

  rec_tbl rec_ttype;

  ln_cnt number;

  ln_cnt2 number;

begin

  for rec in lc loop

    ln_cnt := 2*(lc%rowcount-1) + 1;

    ln_cnt2 := 2*(lc%rowcount-1) + 2;

    rec_tbl(ln_cnt).empno := rec.empno;

    rec_tbl(ln_cnt).ename := rec.ename;

    rec_tbl(ln_cnt).job := rec.job;

    rec_tbl(ln_cnt).mgr := rec.mgr;

    rec_tbl(ln_cnt).hiredate := rec.hiredate;

    rec_tbl(ln_cnt).sal := rec.sal;

    rec_tbl(ln_cnt).comm := rec.comm;

    rec_tbl(ln_cnt).deptno := rec.deptno;

    rec_tbl(ln_cnt2)     := rec_tbl(ln_cnt);

    rec_tbl(ln_cnt2).ename := 'fl_'||to_char(rec_tbl.count);

  end loop;

  forall i in 1..rec_tbl.count

    insert into a

    values rec_tbl(i);

end;

/

5Oracle定义类别和数组

DECLARE
TYPE LIST_NAME IS TABLE OF VARCHAR2(100);
LIST_TBL LIST_NAME;
BEGIN
LIST_TBL := LIST_NAME(); -- 初始化必

LIST_TBL := LIST_NAME( 'FENG LEI', 'LI RUOFEI', 'LIU YUEFANG');
LIST_TBL.EXTEND;   --
扩张使用
LIST_TBL.EXTEND;
LIST_TBL(4) := 'LI RUOFEI2';
LIST_TBL(5) := 'LI RUOFEI;
LIST_TBL := SET(LIST_TBL);   --
数据过滤
FOR i IN 1..LIST_TBL.COUNT LOOP
DBMS_OUTPUT.PUT_LINE(LIST_TBL(i));
END LOOP;
end;
/

 

6.CHR 
出整数,返回对应的字符

SQL> select chr(54740) zhao,chr(65) chr65 from dual; 

ZH C 
-- - 
 A 

7
.CONCAT 
接两个字符串

SQL> select concat('010-','88888888')||'
23' 高乾竞电话
 from dual; 

高乾
竞电话
 
---------------- 
010-88888888
23 

8
.INITCAP 
返回字符串并将字符串的第一个字母
变为大写

SQL> select initcap('smith') upp from dual; 

UPP 
----- 
Smith 


9
.INSTR(C1,C2,I,J) 
在一个字符串中搜索指定的字符,返回
发现指定的字符的位置

C1 被搜索的字符串 
C2 希望搜索的字符串 
搜索的
始位置,认为

的位置,认为

SQL> select instr('oracle traning','ra',1,2) instring from dual; 

INSTRING 
--------- 



10
.LENGTH 
返回字符串的

SQL> select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst; 

NAME LENGTH(NAME) ADDR LENGTH(ADDR) SAL LENGTH(TO_CHAR(SAL)) 
------ ------------ ---------------- ------------ --------- -------------------- 
高乾
 3 北京市海
 6 9999.99 7 



11
.LOWER 
返回字符串,并将所有的字符小写 
SQL> select lower('AaBbCcDd')AaBbCcDd from dual; 

AABBCCDD 
-------- 
aabbccdd 


12
.UPPER 
返回字符串,并将所有的字符大写 
SQL> select upper('AaBbCcDd') upper from dual; 

UPPER 
-------- 
AABBCCDD 



13.RPADLPAD(字符

RPAD 在列的右
字符
 
LPAD 在列的左
字符
 
SQL> select lpad(rpad('gao',10,'*'),17,'*')from dual; 

LPAD(RPAD('GAO',1 
----------------- 
*******gao******* 
字符*来填
 


14
.LTRIMRTRIM 
LTRIM 
除左的字符串
 
RTRIM 
除右的字符串
 
SQL> select ltrim(rtrim(' gao qian jing ',' '),' ') from dual; 

LTRIM(RTRIM(' 
------------- 
gao qian jing 


1
5
.SUBSTR(string,start,count) 
取子字符串,start
,count 
SQL> select substr('13088888888',3, from dual; 

SUBSTR(' 
-------- 
08888888 


1
6
.REPLACE('string','s1','s2') 
string 希望被替
的字符或
 
s1 被替
的字符串
 
s2 要替
的字符串
 
SQL> select replace('he love you','he','i') from dual; 

REPLACE('H 
---------- 
i love you 


1
7
.SOUNDEX 
返回一个与
定的字符串音相同的字符串
 
SQL> create table table1(xm varchar(); 
SQL> insert into table1 values('weather'); 
SQL> insert into table1 values('wether'); 
SQL> insert into table1 values('gao'); 

SQL> select xm from table1 where soundex(xm)=soundex('weather'); 

XM 
-------- 
weather 
wether 


1
8
.TRIM('s' from 'string') 
LEADING 剪掉前面的字符 
TRAILING 剪掉后面的字符 
如果不指定,
认为空格符
 

1
9
.ABS 
返回指定
绝对值
 
SQL> select abs(100),abs(-100) from dual; 

ABS(100) ABS(-100) 
--------- --------- 
100 100 

 

 

20Over oracle的分析函数over 窗函数

一:分析函数over

     
返回多行,而聚合函数只返回一行。
     下面通
几个例子来明其用。                                       

1统计某商店的营业额        

     date       sale
     1           20
     2          
15
     3           14
     4           18
     5           30
   
规则:按天统计天都统计前面几天的总额

    得到的
果:
    DATE   SALE       SUM
    ----- -------- ------
    1      20        20           --1           
    2      15        35           --1天+2           
    3      14        49           --1天+2天+3           
    4      18        67            .          
    5      30        97            .
     
2:
统计各班成第一名的同学信息

    NAME   CLASS S                         
    ----- ----- ----------------------
    fda    1      80                     
    ffd    1      78                     
    dss    1      95                     
    cfe    2      74                     
    gds    2      92                     
    gf     3      99                     
    ddd    3      99                     
    adf    3      45                     
    asdf   3      55                     
    3dd    3      78              
   
   
   
    --
    select * from                                                                       
    (                                                                            
    select name,class,s,rank()over(partition by class order by s desc) mm from t2
    )                                                    

你可能感兴趣的:(Oracel 基本知識)