Oracle----oracle编程总结

1,SEQUENCE的使用

问题:在MSSQL中,我们可以通过设置自增长来作为主键,但是oracle里面没有这个

解决方案:使用SEQUENCE来实现,具体步骤如下

(1)首先建立一个序列(就是每次查询会自动增加值的绝不重复的对象,比如每次加1或每次加10)。语法:
CREATE SEQUENCE 序列名
[INCREMENT BY n] --每次加几
[START WITH n] --序列从几开始
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}] --最小值、最大值的限制
比如CREATE SEQUENCE s_test start with 1 increment by 1; --就是建立了额一个从1开始每次加1的序列。
访问序列时,用 序列名称.nextval的语法。

比如对于上表,如果想要id字段实现自增。则在每次插入记录时,使用下面类似的语法(前提是表和序列已经建好)。
insert into test values (s_test.nextval,'张三');

当然,你也可以自动一些,对表的插入操作,建立一个触发器,每当有数据插入时,触发器自动修改id值为序列的新值,这样就完全实现自增id功能了。不过其实也没有这个必要。因为触发器如果建多了,有时会比较混乱,不易管理。

2,PL/SQL 存储过程

存储过程相当于一个方法块,或者函数块,用来完成特定功能,并且是高频使用。具体的步骤包括

pl/sql块由三个部分构成: 定义部分,执行部分,例外处理部分。
如下所示:

declare/*定义部分——定义常量、变量、游标、例外、复杂数据类型*/

begin /*执行部分——要执行的pl/sql语句和sql语句*/

exception /*例外处理部分——处理运行的各种错误*/ end;
定义部分是从declare开始的,该部分是可选的;
执行部分是从begin开始的,该部分是必须的;
例外处理部分是从exception开始的,该部分是可选的

带参数的如下

1  create or replace procedure stu_update_price(v_id number,v_price number) is
2 
3  begin
4  update student set stu_price = v_price where stu_id=v_id;
5  dbms_output.put_line(v_id||' new price is '||v_price);
6  end;
7  /
oracle创建存储过程

 3,函数

函数用于返回特定的数据,当建立函数时,在函数头部必须包含return子句。
而在函数体内必须包含return语句返回的数据。我们可以使用createfunction
来建立函数

 1 create function get_stu_price(v_stuid number) return number is
 2 stu_id_value number(5);
 3 begin
 4 select stu_price into stu_id_value from student where stu_id = v_stuid;
 5 return stu_id_value;
 6 end;
 7 /
 8 
 9 
10 SQL> var income number
11 SQL> call get_stu_price(1001) into:income;
12 
13 调用完成。
14 
15 SQL> print income
16 
17     INCOME
18 ----------
19        100
创建函数并调用函数
posted @ 2016-07-05 14:23  凝荷  阅读(553)  评论(0编辑  收藏  举报