Oracle存储过程学习笔记
SQL是一种语言!
SQL是一种语言!
SQL是一种语言!
个人理解:存储过程就相当于Java中的方法;声明变量区域就相当于java中的声明局部变量一样,只是放到一个指定区域定义了
一、先看一部分基础:
1、语法:
CREATE OR REPLACE PROCEDURE 存储过程名字
(
--声明参数(注意不需要写长度,和java的定义新的方法时的参数一样)
参数1 IN NUMBER,
参数2 out NUMBER
)IS -- 声明变量区域,不需要声明变量可以不写
-- 变量声明,每个声明用分号结束。可以在声明的同时初始化
变量1 INTEGER :=0;
变量2 DATE; BEGIN --业务逻辑执行区域 END 存储过程名字; 这里的IS也可以用AS替代!
举个例子:
create -- 存储过程头部区域开始
or replace --可选表示如果数据库中已经存在一条相同名称的存储过程就把它替换掉
procedure
proc_emp_create --存储过程名称 procedure_name
(
empno number, ename varchar2, job varchar2, mgr number, hiredate date, sal number, comm number, deptno number
)
as
--声明区域,不需要声明变量可以不写
begin -- PL/SQL标准执行语句
--执行区域
insert into emp values(empno, ename, job, mgr, hiredate, sal, comm, deptno);
end;
一个存储过程可以分成三个区域:
头部区域
用于编写最基本的存储过程头部标记,定义是否要创建一个替代原有存储过程的存储过程;决定是否定义参数;定义参数的类型(in out inout);定义执行权限(Schema)。 声明区域
用于声明变量(要定义长度)包括cursor; 执行区域
用于执行业务逻辑代码,可以使用条件语句(选择、判断、循环。。。)来进行一些业务逻辑CRUD的处理;
2.SELECT INTO STATEMENT
将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条
记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND)
例子:
BEGIN
SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx;
EXCEPTION
WHEN NO_DATA_FOUND THEN
xxxx;
END; 在利用select...into...语法时,必须先确保数据库中有该条记录,否则会报出"no data found"异常。
可以在该语法之前,先利用select count(*) from 查看数据库中是否存在该记录,如果存在,再利用select...into...
注意事项:
1、在oracle中,数据表别名不能加as,如:
select a.appname from appinfo a;-- 正确
select a.appname from appinfo as a;-- 错误
也许,是怕和oracle中的存储过程中的关键字as冲突的问题吧; 2、oracle 的is 和as有什么区别?
在存储过程(PROCEDURE)和函数(FUNCTION)中没有区别;
在视图(VIEW)中只能用AS不能用IS;
在游标(CURSOR)中只能用IS不能用AS;
二、再看一个例子来熟悉创建和调用(自己操作看结果)
create table mytest(
name varchar2(50),
age number(10)
); --循环往表中插入数据
DECLARE
X number; --声明变量
BEGIN
x := 1; --给初值
FOR X IN REVERSE 1 .. 10 LOOP
insert into mytest values ('张三',10);
END LOOP;
COMMIT;
END; --创建存储过程
create or replace procedure AutoUpdateName(
v_oldName in VARCHAR2,/*旧名称*/
v_newName in VARCHAR2/*新名称*/
)
is
begin UPDATE mytest SET name=REPLACE(name,v_oldName,v_newName) WHERE name LIKE '%'||v_oldName||'%'; COMMIT; end AutoUpdateName; --调用该存储过程
begin
AutoUpdateName('张三','李四');
commit;
end; 结果会看到,调用该存储过程后将表中的数据张三全部替换成为了李四;
end;
Oracle存储过程学习笔记的更多相关文章
- Oracle 存储过程学习笔记
1.存储过程简单实例 CREATE OR REPLACE PROCEDURE 存储过程名称 (参数in,参数out) AS -- 变量声明,每个声明用分号结束.可以在声明的同时初始化 name ); ...
- Oracle RAC学习笔记:基本概念及入门
Oracle RAC学习笔记:基本概念及入门 2010年04月19日 10:39 来源:书童的博客 作者:书童 编辑:晓熊 [技术开发 技术文章] oracle 10g real applica ...
- Oracle RAC学习笔记01-集群理论
Oracle RAC学习笔记01-集群理论 1.集群相关理论概述 2.Oracle Clusterware 3.Oracle RAC 原理 写在前面: 最近一直在看张晓明的大话Oracle RAC,真 ...
- Oracle RAC学习笔记02-RAC维护工具集
Oracle RAC学习笔记02-RAC维护工具集 RAC维护工具集 1.节点层 2.网络层 3.集群层 4.应用层 本文实验环境: 10.2.0.5 Clusterware + RAC 11.2.0 ...
- [Oracle]OWI学习笔记--001
[Oracle]OWI学习笔记--001 在 OWI 的概念里面,最为重要的是 等待事件 和 等待时间. 等待事件发生时,需要通过 P1,P2,P3 查看具体的资源. 可以通过 v$session_w ...
- Oracle基础学习笔记
Oracle基础学习笔记 最近找到一份实习工作,有点头疼的是,有阶段性考核,这...,实际想想看,大学期间只学过数据库原理,并没有针对某一数据库管理系统而系统的学习,这正好是一个机会,于是乎用了三天时 ...
- MySQL存储过程学习笔记
MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣.MySQL 5.0终于开始支持存储过程了. MySQL的关键字大小写通用.该学习笔记对关键字使用大写:变量名,表名使用小写. ...
- Oracle存储过程学习备忘
之前的项目使用存储过程很少,但在实际的项目中,存储过程的使用是必不可少的. 存储过程是一组为了完成特定功能的SQL 语句 集,经编译后存储在数据库中:存储过程创建后,一次编译在程序中可以多次调用,对安 ...
- Oracle存储过程学习使用
存储过程创建语法: create or replace procedure 存储过程名(param1 in type,param2 out type) as 变量1 类型(值范围); 变量2 类型(值 ...
随机推荐
- 解决EasyUI DataGrid删除行失败的方法
笔者最近在做一个项目的后台,用到了EasyUI的datagrid控件,并开启了行内编辑功能,实际上也就是使用了edatagird这个空间,引用了edatagrid.js,一切似乎都做的顺风顺水,添加数 ...
- k8s第一个实例创建redis集群服务
1.创建redis-master-controller.yaml apiVersion: v1 kind: ReplicationController metadata: name: redis-ma ...
- 【iOS开发】IOS界面开发使用viewWithTag:(int)findTag方法获取界面元素
http://blog.csdn.net/lxp1021/article/details/43952551 今天在开发OS界面的时候,遇到通过界面UIview viewWithTag:(int)fin ...
- java正则表达式 3 -- 查找
用正则表达式执行查找命令,则需要用正则对象,其规则和执行顺序如下: 指定为字符串的正则表达式必须首先被便以为此类的实例.然后,可将得到的正则对象匹配任意的字符串用于创建Mather对象,执行匹配所涉及 ...
- iOS银联,支付宝,微信,ping++开发文档
银联支付 银联支付目测只需两个参数 1.tn 其实就是订单号 2.mode 是测试环境还是线上环境 开发步骤 1.首先客户端浏览商品,点击下单,请求到达商户后台 2.商户后台在提交订单信息到银联后台 ...
- Activiti工作流(二)——入门Demo及数据库
上篇博客简单介绍了Activiti流程图的使用,这篇博客我们就根据这个流程图来完成这一个流程. 下图是Activiti的系统服务结构图,在后面的流程中,我们会用到其中的功能组件,如Repositor ...
- Linux挂载Win共享文件夹 一
1, Win下选中文件夹,属性设置为共享,红圈中的为共享路径,挂载时//ip/共享路径 2, 3,Linux需要安装这两个软件 rpm -qa | grep samba-client rpm -qa ...
- 【历史】- UNIX发展史(BSD,GNU,linux)
先前的一個理想 UNIX 系统自 1969 年 Ken Thompson 与 Dennis Ritchie 在美国贝尔电话实验室(Bell Telephone Laboratories)发展出雏形至今 ...
- el-input为数字时验证问题
el-input为数字时,初始有值,怎么还会验证不能为空? html: <el-form-item label="审核数量:" prop="checkNum&quo ...
- 项目常用解决方案之SystemSetting.xml文件的修改与读取
Winform及WPF项目中经常会用到类似SystemSetting.xml等类似的文件用于保存CLIENT的数据,比如登录过的用户名或密码以及其他设置.所以就想到一个解决方法,可以用到所有有此需求的 ...