PLSQL 基础语法
01. PLSQL 语法(变量,if,loop,cursor,exception)
1. 语法
在数据库服务器上保存的打断可执行方法,供其他开发人员调用
可以有效的减少数据库端和服务端的数据交互,提高效率,降低带宽消耗
语法格式:
declare -- 定义部分,保存变量,引用型变量,记录型异常begin -- 逻辑处理部分exception -- 需要捕获异常是写上end; -- 结束
2. 定义变量
定义 | 描述 |
---|---|
constant | 常量 |
表名%rowtype | 记录型变量 |
表名.列名%type | 引用型变量 |
:= | 给变量赋予默认值 |
into | 把查询出来的数据进行赋值 |
- 实例
declare-- 定义变量i number := 1;-- 定义常量pi constant number := 2;-- 定义记录型变量/记录一行数据-- 变量名 表名%rowtype;v_emp emp%rowtype;-- 定义引用型变量-- 变量名.列明%typepname emp.ename%type;beginselect * into pemp from emp;
end;
3. if判断
语法:
/* if判断: if 条件表达式 thenelsif 条件表达式 thenelse end if; */-- 实例: declareage number := 18; beginif age = 17 thendbms_output.put_line('我是17');elsif age = 18 thendbms_output.put_line('我是18');elsedbms_output.put_line('我是??');end if; end;
4. loop循环
语法:
/* 语法一: 相当于while循环 while 条件表达式 loopend loop; */ -- 实例 declarei number := 0; beginwhile i < 10 loopi := i + 1;dbms_output.put_line(i);end loop; end;/* 语法二: loopexit when 退出循环条件end loop; */ -- 实例: declarei number := 0; beginloopi := i + 1;exit when i > 10;dbms_output.put_line(i);end loop; end;/* 语法三: 1..10: 也可以是查询出来的结果集 for 变量 in 1..10 loop;end loop */ -- 实例: declarei number := 0; beginfor i in 1..10 loopdbms_output.put_line(i);end loop; end;
5. cursor游标
是一个私有的SQL工作区,分为隐式游标和显示游标,我们通常声明的是显示游标
用来操作结果的,相当于java中的迭代器
语法:
/* 开发步骤:1. 声明游标: cursor 游标名 is 查询结果集2. 打开游标: open 游标名3. 从游标中取出数据: fetch 游标名 into 变量名游标名%found: 找到数据游标名%notfound: 没有找到数据4. 关闭游标 */declareemp_rows emp%rowtype;-- 1.cursor rows is select * from emp; begin-- 2.open rows;-- 2.1loop-- 3.fetch rows into emp_rows;-- 3.1exit when rows%notfound;dbms_output.put_line(emp_rows.ename);-- 3.2end loop;-- 4.close rows; end;
6. exception异常
类型 | 描述 |
---|---|
no_data_found | 找不到数据 |
too_many_rows | 匹配到多个字符 |
zero_divide | 零除 |
value_error | 算数或转换异常 |
timeout_on_resource | 在等待资源时发生超时 |
others | 最大的异常/相当于java中的exception |
语法:
/* yvfa: declarebeginexceptionwhen 异常类型 then处理 end; */ -- 实例: declarenum number := 1; beginnum := num/0 ; exceptionwhen zero_divide thendbms_output.put_line('除零异常'); end;-- 自定义异常: declareno_date exception; begin raise no_date;exceptionwhen no_date thendbms_output.put_line('自定义异常'); end;
7. 存储过程
将一个个PLSQL的业务处理过程存储起来复用,这些被存储取来的PLSQL程序称之为存储过程
实例:
/* 语法:create or replace procedure 存储过程名(参数名称 in 参数类型,返回值名称 in 返回值参数类型) is-- 定义变量beginend; */-- 实例一: 无参数无返回值 create or replace procedure run1 is -- 声明变量 begindbms_output.put_line('run1'); end; -- 调用 beginrun1; end;-- 实例二: 有参数无返回值 create or replace procedure run2(i_sid in student.tid%type) is -- 声明变量v_sname student.sname%type;v_sid student.tid%type; beginselect tid,sname into v_sid,v_sname from student where tid = i_sid;dbms_output.put_line(v_sid);dbms_output.put_line(v_sname); end; -- 调用 beginrun2(1); end;-- 实例三: 有参数有返回值 create or replace procedure run3(i_sid in student.tid%type,i_sname out student.sname%type) is beginselect sname into i_sname from student where tid = i_sid; end; -- 调用 declarev_sname student.sname%type; beginrun3(1,v_sname);dbms_output.put_line(v_sname); end;
PLSQL 基础语法相关推荐
- PLSQL基础语法二-流程控制,循环
2019独角兽企业重金招聘Python工程师标准>>> --流程控制 --分支语句 --练习1:字符串 declarestr varchar2(18):='b'; beginif(s ...
- 【转】oracle PLSQL基础学习
[转]oracle PLSQL基础学习 --oracle 练习: /**************************************************PL/SQL编程基础****** ...
- FPGA(2)基础语法 -- 按键控制led(alway@语句)
目录 1.module 文件名(端口) 2.声明关键字 3.always@语句 代码 1.module 文件名(端口) 注:这里最好养成习惯,只在文件名后面的括号中声明引脚变量,输入输出.关键字类型 ...
- javascript基础语法——表达式
前面的话 一般地,关于javascript基础语法,人们听得比较多的术语是操作符和语句.但是,其实还有一个术语经常使用,却很少被提到,这就是javascript表达式(expression).本文将详 ...
- Rust语言开发基础(六)基础语法
2019独角兽企业重金招聘Python工程师标准>>> 一.变量的定义和使用 其它常见的编程语言对变量的定义通常是通过声明类型和使用关键new来创建一个变量,但Rust不是,Rust ...
- python列表嵌套字典取值_Python基础语法:你不得不知的几种变量类型
(点击上方快速关注并设置为星标,一起学Python) 作者:kina_chen來源:简书 01. Python编码Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字, ...
- python赋值语句的一般格式为_Python 基础语法
Python 基础语法 Python 语言与 Perl,C 和 Java 等语言有许多相似之处.但是,也存在一些差异. 在本章中我们将来学习 Python 的基础语法,让你快速学会 Python 编程 ...
- 深入浅出CMake(二): 基础语法
在<深入浅出CMake(一):基础篇>文章中,我们已经知道了怎么依葫芦画瓢编写简单的 CMake 构建文件了,但如果应对复杂的工程的话,这还是远远不够的. CMake 是一套编译构建体系, ...
- Python基础语法学习笔记
Python基础语法学习笔记 想淘宝省钱看我简介,博客www.liangxin.name (一) 一.Print()函数 1.数字可以直接输出,无需加引号 只能理解数字,却读不懂文字.因为数字和数学运 ...
最新文章
- 前置机上如何地址转换_canvas原生层级较高,遮盖自定义tabbar,转换为图片解决...
- Java 读取指定目录下的文件名和目录名
- html中的容器和语义标签
- linux磁盘和文件系统管理
- IdentityServer4【QuickStart】之使用asp.net core Identity
- linux下mysql-5.5.15安装详细步骤
- java memorystream 包_存储在MemoryStream中的裁剪图像中心
- javascript和python的关系_JavaScript是否越来越像Python?
- 【实用工具】linux Can‘t bind address: Address already in use
- 游戏筑基开发之测试篇(C语言)
- 计算机声卡的步骤,详解win7 32位系统电脑重装声卡的步骤
- 百度地图API的IP定位城市和浏览器定位
- 行业边缘丨中国电科发布“海雀”处理器;中科海微获千万融资;联想发布边缘服务器;风河加入CNCF云原生计算基金会成为银牌会员;...
- 你能发现什么?又能坚持什么?
- t460p加固态硬盘 thinkpad_联想T460p加装固态硬盘
- 谁知道qq会员怎么退款呢
- 软件测试发展前景进阶路线
- 3 FPGA时序约束理论篇之IO约束
- 是用bbed工具模拟对块的破坏,并使用rman bock recover进行块恢复
- app定制开发的好处