1、              Oracle的自定义函数

2、              Oracle的触发器

3、              Oracle的存储过程

知识点一:自定义函数

语法:create [or replace] function 函数名(参数)

return返回值类型—必须

is

--变量的声明

begin

--执行语句

--return 返回变量

--exception 异常块(return 异常编号)

end;

Java:

int add(int no1,int no2)

{

int sum = no1+no2;

return sum;

}

Oracle

--编写一个简单的自定义函数

createorreplacefunction fun_add(no1 number,no2 number)

returnnumber

is

v_sum number;

begin

v_sum := no1+no2;

return v_sum;

exception

whenothersthen

return-1;

end;

调用函数

方式一:

select fun_add(50,50) from dual;

方式二:

declare

v_no1 number(2);

v_no2 number(2);

v_sum number(3);

begin

v_no1 :=50;

v_no2 :=50;

v_sum := fun_add(v_no1,v_no2);

if v_sum =-1then

dbms_output.put_line('输入的数据有误!');

else

dbms_output.put_line(v_sum);

endif;

exception

whenothersthen

dbms_output.put_line('输入的数据有误!');

end;

知识点二:触发器 trigger(DML触发器)

语法:

create[or replace]  trigger tri_名字

after|before

insert|delete|update

on 表名

[for each row]—行级触发器

begin

--执行语句块

end;

案例:删除emp表数据的时候,让emp_bak表自动备份

--删除emp_bak表数据的时候,让emp_bak01表自动备份

createorreplacetrigger  tri_delemp

afterdelete

on emp_bak

foreachrow

begin

insertinto emp_bak01(empno,ename,job,mgr,hiredate,sal,comm,deptno)

values(:old.empno,:old.ename,:old.job,:old.mgr,:old.hiredate,:old.sal,

:old.comm,:old.deptno);

end;

案例:创建userinfo(userid,uname,upw),userid自动+1实现

步骤一:创建一个表

createtable userinfo(

userid number(4) primary key,

uname varchar2(10)notnullunique,

upw varchar2(10)notnull

)

步骤二:创建序列

create sequence seq_userid;

步骤三:创建触发器

createorreplacetrigger tri_userid

beforeinsert

on userinfo

foreachrow

begin

select seq_userid.nextval into:new.userid from dual;

end;

步骤四:启动触发器

insert into userinfo(uname,upw) values('lily','123456');

案例:实现更改userinfo表的名字这个字段的时候,对原来数据进行备份,备份到userinfo_bak表中

知识点三:存储过程procedure

语法:

create or replace procedure pro_存储过程名称(输入参数 in,输出参数 out)

as

--变量的声明

begin

--执行过程

--exception异常处理过程

end;

案例:定义存储过程,完成userinfo表的插入功能(完成账户注册这个功能)

--完成userinfo表的插入功能

createorreplaceprocedure pro_userreg(

v_uname in userinfo.uname%type,v_upw in userinfo.upw%type)

as

begin

insertinto userinfo(uname,upw)values(v_uname,v_upw);

end;

执行存储过程

方法一:命令行执行

execute pro_userreg('jack','123456');

方法二:plsql执行

begin

pro_userreg('jack','123456');

end;

方法三:应用程序Java,C#,php调用存储过程

案例二:定义存储过程完成登录

--定义存储过程完成登录

createorreplaceprocedure pro_userlog(

v_uname userinfo.uname%type,v_upw userinfo.upw%type, v_result outnumber)

as

begin

selectcount(*)into v_result from userinfo where

uname = v_uname and upw = v_upw;

end;

declare

v_uname userinfo.uname%type;

v_upw userinfo.upw%type;

v_result number(1);

begin

v_uname :='jack';

v_upw :='123456';

pro_userlog(v_uname,v_upw,v_result);

if v_result =1then

dbms_output.put_line('登陆成功!');

else

dbms_output.put_line('登陆失败!');

endif;

end;

2017-10-31 18:37:14

Oracle 笔记(五)的更多相关文章

  1. Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间

    alter table userInfo add(msn varchar2(20)); 1.建表 create table userInfo ( id number(6), name varchar2 ...

  2. oracle 笔记---(五)__内存管理

    ###查看连接池的信息 select connection_pool,status,maxsize from dba_cpool_info            

  3. Oracle笔记 目录索引

    Oracle笔记 一.oracle的安装.sqlplus的使用 Oracle笔记 二.常用dba命令行 Oracle笔记 三.function .select Oracle笔记 四.增删改.事务 Or ...

  4. 韩顺平Oracle笔记

    韩顺平Oracle笔记 分类: DataBase2011-09-07 10:24 3009人阅读 评论(0) 收藏 举报 oracle数据库sqljdbcsystemstring   目录(?)[-] ...

  5. Oracle笔记 多表查询

    Oracle笔记  多表查询   本次预计讲解的知识点 1. 多表查询的操作.限制.笛卡尔积的问题: 2. 统计函数及分组统计的操作: 3. 子查询的操作,并且结合限定查询.数据排序.多表查询.统计查 ...

  6. C#可扩展编程之MEF学习笔记(五):MEF高级进阶

    好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...

  7. 《MFC游戏开发》笔记五 定时器和简单动画

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9332377 作者:七十一雾央 新浪微博:http:// ...

  8. (转)Qt Model/View 学习笔记 (五)——View 类

    Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...

  9. java之jvm学习笔记五(实践写自己的类装载器)

    java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...

  10. Oracle笔记(1) 简单查询、限定查询、数据的排序

    Oracle笔记(四) 简单查询.限定查询.数据的排序   一.简单查询 SQL(Structured Query Language) 结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及 ...

随机推荐

  1. Linux环境测试机器端口连通性

    生产中,有很大一部分的问题都是由于不同机器间网络不同导致的,那么如何判断两台机器之间的连通性?本文介绍几种常见的方式: telnet方法wget方法ssh方法curl方法1. telnet方法格式:t ...

  2. 浅析Java web程序之客户端和服务器端交互原理

    原文链接: https://www.iteye.com/topic/470019 1. 协议 a. TCP/IP整体构架概述 TCP/IP协议并不完全符合OSI的七层参考模型.传统的开放式系统互连参考 ...

  3. MYSQL数据库事务4种隔离级别及7种传播行为

    事务的特性: 原子性:事务的不可分割,组成事务的各个逻辑单元不可分割. 一致性:事务执行的前后,数据完整性保持一致. 隔离性:事务执行不应该受到其他事务的干扰. 持久性:事务一旦结束,数据就持久化到数 ...

  4. SIM800c收发短信及AT指令

    一.sim800设备安装 淘宝搜索sim800,差不多就是这么个样子 购买之后,安装手机卡,卡的缺口向外插入,会有卡住的感觉,再按一下卡会弹出 安装usb转串口驱动(CH340),设备的指示灯先是快闪 ...

  5. 【GDOI2018模拟7.9】期末考试

    题目 分析 如果我们确定最后的成绩公布日期t,那么就可以贪心来求出最小的不愉快度: 首先,那些希望的日期小于t的同学,会产生不愉快度,这个用前缀和可以来处理, 对于课程,我们要将大于t的课程全部拖到t ...

  6. 【leetcode】1260. Shift 2D Grid

    题目如下: Given a 2D grid of size n * m and an integer k. You need to shift the grid k times. In one shi ...

  7. Linux设置程序开机自启动,系统命令chkconfig及linux /etc/rc.d/目录的详解

     整理了linux下程序开启几种方式,转载相关博客做统一记录 <linux程序设置开机自启动>转载自:https://www.cnblogs.com/flcz/p/7691532.html ...

  8. jquery getScript动态加载JS方法改进详解

    有许多朋友需要使用getScript方法动态加载JS,本文将详细介绍此功能的实现方法 $.getScript(url,callback) 这个方法是jquery自身提供的一个用于动态加载js的方法.当 ...

  9. TensorFlow使用记录 (三): Learning Rate Scheduling

    file: tensorflow/python/training/learning_rate_decay.py 参考:tensorflow中常用学习率更新策略 神经网络中通过超参数 learning ...

  10. Zookeeper入门(七)之Java连接Zookeeper

    Java操作Zookeeper很简单,但是前提要把包导对. 关于Zookeeper的Linux环境搭建可以参考我的这篇博客:Linux环境下Zookeeper安装 下面进入正题: 一.导入依赖 < ...