存储过程 学习笔记一

原创 2013年12月04日 09:55:56

create table mytest(
name varchar2(30),
password varchar2(30)
);

create or replace procedure sp_pro1 is
begin
--执行部分
insert into huangbiao.mytest values ('huangbiao','123');
end;

create or replace procedure sp_pro2 is
begin
delete from huangbiao.mytest where name='huangbiao';
end;
/

exec sp_pro2;
如何查看错误信息
show error;

如何调用该过程
1、exec 过程名(参数1,参数2....)
2、call 过程名(参数1,参数2....)


单行注释--
多行注释/*....*/
定义变量,建议v_作为前缀v_sal
定义常量,建议c_作为前缀c_rate
定义游标,建议_cursor结尾 emp_cursor
定义例外,建议e_作为前缀e_error

pl/sql块由三部分构成:
定义部分----declear,该部分是可选的
执行部分----begin,该部分是必须的
例外处理部分----exception,该部分是可选的


最简单的块
set serveroutput on----打开输出选项
begin
dbms_output.put_line('hello');
end;
dbms_output是Oracle所提供的包,类似于JAVA中提供的包,put_line是dbms_output包中的函数

定义部分和执行部分
declare
v_ename varchar2(500);----定义变量
begin
select name into v_ename from mytest where password='123';
dbms_output.put_line('name is ' || v_ename);
end;

declare
v_ename varchar2(500);----定义变量
begin
--&password 表示用户手动的输入值进去
select name into v_ename from mytest where password=&password;
dbms_output.put_line('name is ' || v_ename);
end;

关于多值对应(当前用户需要有访问scott.emp表的查询权限)
declare
v_ename varchar2(500);----定义变量
v_sal number(7,2);
begin
select ename,sal into v_ename,v_sal from scott.emp where ename='SCOTT';
dbms_output.put_line('name is ' || v_ename || ' sal is '|| v_sal);
end;

异常处理
declare
v_ename varchar2(500);----定义变量
v_sal number(7,2);
begin
select ename,sal into v_ename,v_sal from scott.emp where ename='&ename';
----&ename一定要被引号包裹起来,否则会出现语法错误
dbms_output.put_line('name is ' || v_ename || ' sal is '|| v_sal);
----异常处理
exception
when no_data_found then
dbms_output.put_line('查不到指定的数据');
end;
备注:
1、当随便输入一个不存在的值就会抛出异常
2、利用异常来处理某些逻辑
3、Oracle利用事先预定义好的异常来处理

案例:
输入雇员的姓名和新工资,可以修改雇员的工资
create or replace procedure sp_pro3(spename in varchar2,spsal in number) is
begin
--执行部分,根据用户名取修改工资
update scott.emp set sal=spsal where emp.ename=spename;
end;

函数用于返回特定的数据,当建立函数时,在函数头必须包含return子句,而在函数体内必须包含return语句返回的数据。
案例
----输入雇员姓名,返回雇员的年薪
create or replace function sp_fun2(spname varchar2)return number is yearsal number(7,2);
begin
----执行部分
select sal*12+nvl(comm,0) into yearsal from scott.emp where ename=spname;
return yearsal;
end;

var income number;
call sp_fun2('SCOTT') into:income;
----into:incom 中间不能有空格,否则查询不到东西
print income

包用于在逻辑上组合过程和函数
create or replace package sp_package is
procedure update_sal(name varchar2,newsal number);
function annual_income(name varchar2) return number;
end;
给包实现包体
create package body sp_package is
procedure

Oracle存储过程学习笔记

Oracle存储过程学习笔记
  • wahaa591
  • wahaa591
  • 2015年07月01日 17:29
  • 727

Ionic3学习笔记(一)

(一)ionic3环境准备:    1.安装Node.js(安装之后执行node -version检查是否安装成功)     2.安装npm。  命令:npm install npm -g   ...
  • Dan_2017
  • Dan_2017
  • 2017年11月28日 21:46
  • 152

C++/GDI+ 学习笔记(一)——安装、配置&使用

使用GDI+很简单。需要做的有一下几个步骤。1.       安装GDI+ SDK开发包。网上很多地方都有下载。解压到一个地方即可。2.       设置编译器的包含路径,VC6的设置方法是 Tool...
  • eplanet
  • eplanet
  • 2007年10月09日 09:11
  • 9164

Hawq学习笔记 --- 存储过程生成数据

Hawq学习笔记 --- 存储过程生成数据
  • u012965373
  • u012965373
  • 2017年01月17日 12:19
  • 553

Robot Framework 学习笔记(一)

序为了更好的适应工作,提前开始准备学习内容,按照个人学习进度进行阶段性总结,Robot Framework属于自动化测试框架,本文基于Windows7系统进行相关软件安装讲解。安装过程第一步: Pyt...
  • xinyu913
  • xinyu913
  • 2016年04月11日 17:03
  • 638

UNP卷一学习笔记:I/O模型

UNIX下可用的5种I/0模型: (1)阻塞式I/O   (2)非阻塞式I/O   (3)I/O复用   (4)信号驱动I/O(SIGIO)    (5)异步I/O 前4种属于同步操作,第5种属于异步...
  • u014557232
  • u014557232
  • 2016年03月19日 14:25
  • 320

sql server 的T-SQL 学习笔记(八)

/******************* 函数 和 存储过程 ************************/ -- 表值函数和标量值函数 -- 系统存储过程-- 函数 -- 函数是一种用户封装...
  • chencong3139
  • chencong3139
  • 2017年07月25日 14:40
  • 237

VC/MFC学习笔记

 windows中的很多数据类型,如HWND,WParam等其实都是我们所熟悉的unsigned int等一些类型,而定义成新的形式是为了方便记忆,不要因为这个而被难住!消息队列:把消息放在队列中,应...
  • degree_37
  • degree_37
  • 2009年04月22日 16:24
  • 303

SpringMVC 学习笔记(一) Hello World

Spring MVC 是目前最主流的MVC 框架之一 Spring MVC 通过一套 MVC 注解,让 POJO 成为处理请 求的控制器,而无须实现任何接口。 支持 REST 风格的 URL 请求 采...
  • a67474506
  • a67474506
  • 2015年06月04日 14:26
  • 2024

DevExpress学习笔记(五)-以拖拽的方式构建树(TreeList)

DevExpress学习笔记 以拖拽的方式构建树(TreeList) 本人最近在做某个项目中需要用到动态设置TreeList节点的技术,在这个过程中对于TreeList的各项功能有了初步的...
  • ltrelax
  • ltrelax
  • 2012年08月13日 12:07
  • 1231
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:存储过程 学习笔记一
举报原因:
原因补充:

(最多只允许输入30个字)