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.数字可以直接输出,无需加引号 只能理解数字,却读不懂文字.因为数字和数学运 ...
最新文章
- Nature子刊:古菌基因组的标准化物种分类方法
- SAPCAR的简易使用方法
- 关于创建SWAP示例
- 针对Java中的XSD验证XML
- Tomcat启用HTTPS协议配置过程
- C++ STL 容器之 deque简单使用
- 评选 cms_十大评选和编辑精选:12月评论
- 模拟——扫雷游戏(洛谷 P2670)
- 喵喵的QQ小程序登录
- elasticsearch-1.7.1 集群搭建
- opencv4 图像特征匹配_【从零学习OpenCV 4】图像模板匹配
- puttygen生成公私钥_如何使用Puttygen生成腻子密钥?
- 代码整洁之道1-6章总结
- 西门子PLC与Intouch软件以太网通讯
- CTFshow 愚人节欢乐赛 部分WP
- 使用python内置函数进行常规API接口调用
- bootstrap黑色酷炫IT行业个人博客模板
- Ubuntu 14.04出现“device not managed”错误及ubuntu可以ping通外网浏览器上不了网。
- 猫咪藏在哪个房间python_盘点:猫咪玩“躲猫猫”喜欢藏的几个地方,这下再也不愁找不到了...
- 分享一款免费开源的在线文档管理插件
热门文章
- 亚马逊化妆品眼影,口红等需要提供哪些报告才可以正常销售呢?提交步骤有哪些?
- 【Linux——使用篇】:关于Linux下.bin格式文件的安装
- Json-glib的使用
- ant 命令语法不正确
- require.context
- 家用计算机日常使用应注意什么,最全的电脑主机的保养注意事项
- TX2手动安装cudnn
- carbon安装win7 thinkpad x1_ThinkPad New X1 Carbon是否可以安装Windows 7操作系统?
- PHP curl 爬取反 爬的网站,请开启JavaScript并刷新该页.
- ATTCK实战系列—红队实战-4