Oracle使用PL/SQL自定义函数
这里写目录标题
- 一、PL/SQL概述
- 二、变量和常量
- 2.1变量
- 2.2赋值方式
- 2.3常量
- 2.4常量和变量的区别
- 三,%type和%rowtype
- 3.1 %type
- 3.2 %rowtype
- 四、控制结构
- 4.1 if语句
- 4.2 case语句
- 4.3循环控制语句
- 4.4 while循环
- 4.5 for循环
- 五、异常处理
- 5.1预定义异常/系统自带异常.
- 5.2自定义异常.
- 六、自定义函数
一、PL/SQL概述
PL/SQL是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言 (过程化SQL语言);PL/SQL是Oracle对SQL语言的扩展,扩展部分内容:变量、常量、存储过程、程序包、游标、函数、触发器、条件控制、循环控制等;PL/SQL与Oracle服务器和Oracle工具紧密集成,具备可移植性、灵活性和安全性;PL/SQL语法特点:PL/SQL程序都是以块(block)为基本单位,整个PL/SQL块分三部 分:声明部分(用declare开头)、执行部分(以 begin开头,以end结尾)和异常处理部分(以Exception开头)。其中执行部分是必须的,其他两个部分可选。无论PL/SQL程序段的代码量有多大,其基本结构就是由这三部分组成。
二、变量和常量
2.1变量
declare
变量名 数据类型;
begin
执行代码块内容;
end;
2.2赋值方式
方式一:“:=”
方式二:“select into 语句”
2.3常量
decare
变量名1 constant 数据类型 := 值;
begin
执行代码块内容;
end;
2.4常量和变量的区别
常量声明的时候要在数据类型前面加 constant 关键字,表示常量的意思;
常量必须初始值,且值不能被修改;
三,%type和%rowtype
3.1 %type
作用:用来引用数据表里面某个字段的数据类型;
通俗解释:当我们想要声明一个变量来保存表内某个字段值但是又不知道该变量用什么 数据类型的时候,我们就可以引用表内该字段的数据类型来作为变量的数据类型。
3.2 %rowtype
作用:可以声明一个基于表的行对象,也称为记录对象。
四、控制结构
4.1 if语句
语法结构:
if(条件1) then
条件1成立执行代码块
elsif(条件2) then
条件2成立执行代码块
…
else
以上条件都不成立执行代码块
end if;
4.2 case语句
语法结构:
begin
case ‘&变量’
when ‘值1’ then 执行代码块1;
when ‘值2’ then 执行代码块2;
when ‘值3’ then 执行代码块3;
when ‘值4’ then 执行代码块4;
…
else 当以上值都不满足的时候执行代码块
end case;
end;
“&”:作用相等于Java里面的Scanner;
4.3循环控制语句
loop循环.
案例1:输出1-100之间所有数字;
declare
i number:=0;
begin
<> --给loop循环取别名:aloop
loop
dbms_output.put_line(i); --输出每一个值
i:=i+1; --i的值在叠加
exit aloop when i=101; --当i等于100的时候aloop循环退出
end loop;
end;
4.4 while循环
while循环.
案例:求1-100之间的和。
declare
i number(8):=0;
mysum number(8):=0;
begin
while(i<=100) loop
mysum:=mysum+i;
i:=i+1;
end loop;
dbms_output.put_line(mysum); --循环完成后输出最终求的和
end;
4.5 for循环
案例:求1-100之间的和。
declare
mysum number(7):=0;
begin
for i in 1…100 loop
mysum:=mysum+i;
end loop;
dbms_output.put_line(mysum);
end;
五、异常处理
5.1预定义异常/系统自带异常.
当PL/SQL程序违反Oracle规则或超越系统限制时隐式引发。
5.1.1 too_many_rows.
too_many_rows:行太多。意为:实际返回的行数超出请求的行数。
异常演示:
declare
sid number:=7499;
mysum emp%rowtype;
begin
select * into mysum from emp;
dbms_output.put_line(‘名字是:’||mysum.ename||‘,岗位是:’||mysum.job);
end;
处理异常:
declare
sid number:=7499;
mysum emp%rowtype;
begin
select * into mysum from emp;
dbms_output.put_line(‘名字是:’||mysum.ename||‘,岗位是:’||mysum.job);
exception when too_many_rows then
dbms_output.put_line(‘太多行’);
end;5.1.2 no_data_found.
no_data_found:行太少。意为:未查询到数据。
异常演示:
declare
sid number:=0000;
mysal emp.sal%type;
begin
select sal into mysal from emp where empno=sid;
if(mysal>3500) then
dbms_output.put_line(‘要纳税’);
else
dbms_output.put_line(‘要努力’);
end if;
end;
处理异常:
declare
sid number:=0;
mysum emp%rowtype;
begin
select * into mysum from emp where empno=sid;
dbms_output.put_line(‘名字是:’||mysum.ename||‘,岗位是:’||mysum.job);
exception when no_data_found then
dbms_output.put_line(‘行太少’);
end;
5.2自定义异常.
语法:
declare
异常变量 exception;
begin
if(触发异常条件) then
raise 异常变量;
else
未触发异常执行的代码块
end if;
exception when 异常变量 then
触发异常执行的代码块
end;
案例演示:–根据工号查询工资,如果工资低于3500则抛出异常:‘你的工资太低了’。否则就输出:‘你的工资可以哟’。
declare
sid number:=7369;
mye exception;
mysal emp.sal%type;
begin
select sal into mysal from emp where empno=sid;
if(mysal<3500)then
raise mye;
else
dbms_output.put_line(‘你的工资可以哟’);
end if;
exception when mye then
dbms_output.put_line(‘你的工资太低了’);
end;
六、自定义函数
语法结构
create [or replace] function 函数名 (参数1,参数2)
return 返回值类型 is|as
定义返回变量(要取长度);
begin
函数要执行的sql语句
return 变量名;
end;
案例演示:
定义函数:通过学号返回学生的名字。
create or replace function
fun_name(sid number) --函数名,带参数
return varchar2 is --返回值的类型,注意这里不能指定数据类型的长度
sname varchar2(10); --定义返回的变量(要取长度)
begin
select ename into sname from emp where empno=sid;
return sname; --返回定义的变量sname
end;
调用函数:select fun_name(7369) from dual;
Oracle使用PL/SQL自定义函数相关推荐
- sql 中位数_【PL/SQL 自定义函数】 常用场景
看完这章后你会学习到以下内容: 1.练习场景 2.面试场景 3.工作应用场景 总览思维导图: 面试部分: 1.创建函数,从emp表中查询指定员工编号的职工的工资 CREATE OR REPLACE F ...
- 自定义sql_【PL/SQL 自定义函数】 常用场景
看完这章后你会学习到以下内容: 1.练习场景 2.面试场景 3.工作应用场景 总览思维导图: 面试部分: 1.创建函数,从emp表中查询指定员工编号的职工的工资 CREATE OR REPLACE F ...
- 使用wrap和unwrap加密解密Oracle的PL/SQL对象(包,存储过程,函数等)代码
使用wrap和unwrap加密解密Oracle的PL/SQL对象(包,存储过程,函数等)代码 Oracle数据库系统自带的PL/SQL对象(包,存储过程,函数等)的代码绝大部分都是使用了wrap程序加 ...
- 使用oracle 的 PL/Sql 定时执行一个存储过程
/* 使用oracle 的 PL/Sql 定时执行一个存储过程 测试目的:在表 tab 中间隔一分钟插入一条数据 实现方案: 1.通过 oracle 中 dbms_job 完成存储过程的定时调用 2. ...
- oracle 12c sql图形化,Oracle 12c PL/SQL程序设计终极指南
Oracle 12c PL/SQL程序设计终极指南 作者:孙风栋;王澜;郭晓惠 出版日期:2015年06月 文件大小:11.73M 支持设备: ¥60.00在线试读 适用客户端: 言商书局 iPad/ ...
- Oracle(五)PL/SQL编程语言
Oracle(五)PL/SQL编程语言 ---pl/sql编程语言 ---pl/sql语言是对sql语言的扩展,使得sql语言具有过程化编程的特性. ---pl/sql编程语言比一般的过程化编程语言, ...
- Oracle之PL/SQL学习笔记之有名块练习
2019独角兽企业重金招聘Python工程师标准>>> Oracle之PL/SQL学习笔记之有名块练习 存储过程案例: 案例1: 根据雇员姓名跟新雇员工资,如果雇员不存在输出没有该雇 ...
- oracle写SQL快捷键,Oracle数据库PL/SQL快捷键设置详解
Oracle数据库中,PL/SQL设置快捷键的方法是本文我们主要要介绍的内容,了解了这些设置可以是我们更效率地使用Oracle数据库,接下来就让我们一起来了解一下这部分内容吧. 1.登录后默认自动选中 ...
- Oracle之PL/SQL编程从入门到精通-文心-专题视频课程
Oracle之PL/SQL编程从入门到精通-23941人已学习 课程介绍 本课程基于Oracle数据库,讲解PL/SQLl编程方面的技能,通过本课程的学习,学员能在短的时间内掌握Ora ...
最新文章
- 人参中第一次膜你退货
- 怎么学python-如何轻松学习Python数据分析
- final 修饰方法参数
- write()和read()
- 基于双向链表的增删改查和排序(C++实现)
- linux计算脚本执行时间,linux – 计算shell脚本每一步的时间并显示总执行时间
- MyBatis 缓存详解-二级缓存介绍
- Qos、Tos、Cos、DSCP
- ZT 类模板Stack的实现 by vector
- fanuc机器人编程手册_是谁需要G代码编程机器人?
- 阿里小二的日常工作要被TA们“接管”了!
- IOS 在终端( Terminal )开发
- android:Read-only file system解决
- SI 9000 阻抗计算笔记
- 免费文献下载地址汇总
- 晶体管介绍工作原理与历史
- SaaS应用12原则
- 2016--在技术的浪潮中自我实现
- PyQt5在窗口上显示动态图表
- edge浏览器整理收藏夹 找不到收藏夹