Oracle编程学习存储过程、函数、游标

来源:互联网 发布:长虹网络电视型号 编辑:程序博客网 时间:2024/04/30 16:04
 Oracle编程不同于SQLserver,日期函数和SQLServer不同,数据类型转换和SQLServer不同,为了将Oracle学习简单化,重点指出几个常见并且用得比较多的

函数

日期函数:Months_between(sysdate,指定时间)算出日期时间差

                   Add_Months(sysdate,1)返回增加月份数

                  Next_day(sysdate,星期一)返回下周一

                 Last_day(sysdate)返回当月最后一天

特殊函数: trunc(sysdate,'y')返回当年第一天

                   trunc(sysdate,'MM')返回当月第一天

                   trunc(sysdate,'dd')返回当天0点

                  trunc(sysdate,'HH')返回当时整时刻。。。。。

字符串转换:to_char(sysdate,'yyyyMMdd')返回标准日期

                       to_char(sysdate,'D')返回星期+1

                      to_char('1000000','L999,999,999.99')返回金钱格式四舍五入到小数点2位

   确定一年内天数select add_months(trunc(sysdate,'y'),12))-trunc(sysdate,'y') from dual

以下是存储过程:

--根据主键判断是否插入数据create or replace procedure addone(ppid test_pp.pp_id%type,pp_name test_pp.pp_name%type,pp_demo test_pp.pp_demo%type)as  a number; begin   select count(1) into a from test_pp where test_pp.pp_id=ppid;   if a=0     then       insert into test_pp values (ppid,pp_name,pp_demo);    end if;   end;


以下是函数:

--返回用户名create or replace function findone(ppid test_pp.pp_id%type)return test_pp.pp_name%typeis  n test_pp.pp_name%type; begin    select pp_name into n from test_pp where test_pp.pp_id=ppid;    return n;   end;

以下是游标:

--使用游标循环输出declare cursor mycur is select *from test_pp;pp test_pp%rowtype;begin  for pp in mycur loop    dbms_output.put_line('name:'||pp.pp_name);    dbms_output.put_line('demo:'||pp.pp_demo);    end loop;

如果能写好以上存储过程、函数、游标,同时要理解索引的作用,索引使用应该注意哪些,了解视图的原理,知道SQL语句优化规范,善于使用性价比高的SQL语句(当然,这里的性是指性能,价是指运行效率),以及数据库的一些安全性。学习Oracle其实不难,做到这些基本上掌握了Oracle理念,对于开发人员来说已经足够了,那些大型企业的面试题看似很难,只要再掌握SQL子查询、联合查询、条件查询、函数查询,就很容易对付了。 

原创粉丝点击