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 基础语法相关推荐

  1. PLSQL基础语法二-流程控制,循环

    2019独角兽企业重金招聘Python工程师标准>>> --流程控制 --分支语句 --练习1:字符串 declarestr varchar2(18):='b'; beginif(s ...

  2. 【转】oracle PLSQL基础学习

    [转]oracle PLSQL基础学习 --oracle 练习: /**************************************************PL/SQL编程基础****** ...

  3. FPGA(2)基础语法 -- 按键控制led(alway@语句)

    目录 1.module 文件名(端口) 2.声明关键字 3.always@语句 代码 1.module 文件名(端口)  注:这里最好养成习惯,只在文件名后面的括号中声明引脚变量,输入输出.关键字类型 ...

  4. javascript基础语法——表达式

    前面的话 一般地,关于javascript基础语法,人们听得比较多的术语是操作符和语句.但是,其实还有一个术语经常使用,却很少被提到,这就是javascript表达式(expression).本文将详 ...

  5. Rust语言开发基础(六)基础语法

    2019独角兽企业重金招聘Python工程师标准>>> 一.变量的定义和使用 其它常见的编程语言对变量的定义通常是通过声明类型和使用关键new来创建一个变量,但Rust不是,Rust ...

  6. python列表嵌套字典取值_Python基础语法:你不得不知的几种变量类型

    (点击上方快速关注并设置为星标,一起学Python) 作者:kina_chen來源:简书 01. Python编码Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字, ...

  7. python赋值语句的一般格式为_Python 基础语法

    Python 基础语法 Python 语言与 Perl,C 和 Java 等语言有许多相似之处.但是,也存在一些差异. 在本章中我们将来学习 Python 的基础语法,让你快速学会 Python 编程 ...

  8. 深入浅出CMake(二): 基础语法

    在<深入浅出CMake(一):基础篇>文章中,我们已经知道了怎么依葫芦画瓢编写简单的 CMake 构建文件了,但如果应对复杂的工程的话,这还是远远不够的. CMake 是一套编译构建体系, ...

  9. Python基础语法学习笔记

    Python基础语法学习笔记 想淘宝省钱看我简介,博客www.liangxin.name (一) 一.Print()函数 1.数字可以直接输出,无需加引号 只能理解数字,却读不懂文字.因为数字和数学运 ...

最新文章

  1. NYOJ128前缀式计算
  2. Python3 数字转换为字符串str()函数
  3. CodeAbstract
  4. Vue保持用户登录及权限控制
  5. 什么不是预防计算机病毒的方法,预防计算机病毒的方法是什么
  6. Windows平台下的多线程编程
  7. Cookies和Session(三)--SessionState
  8. Java™ 教程(常见问题及其解决方案)
  9. linux查看慢日志记录,MySQL慢查询日志
  10. cmake导入so库_cmake编译.so库体积非常大,求解答
  11. cocos2d-x学习知识点记录
  12. 多版本并发控制MVCC和乐观锁OCC 是什么 区别
  13. html图片没有白边,css插入背景图片底部有白边的解决方法
  14. SoftMaker Office 2021中文版软件介绍-Office办公套件媲美Microsoft Office
  15. mysql中 符号什么意思_MySQL中的 || 符号是什么意思?
  16. 人脸检测卷积神经网络_卷积神经网络和计算机视觉的人脸面具检测算法
  17. xmanager linux 配置,配置Xmanager连接Linux
  18. 类的设计与实现1、设计一个图形抽象类Graph,该类中有成员变量图形类型(type),维度信息(dimension,二维或三维);成员方法计算面积(computeArea); 2、设计一个接口
  19. 【Ubuntu】SMBus Host controller not enabled(虚拟机进入不了图形界面)
  20. 多线程+socket 实现群聊服务器

热门文章

  1. 学习Numpy(一)
  2. php中浮点数四舍五入,php 浮点数四舍五入函数
  3. zk - zookeeper实现分布式锁代码
  4. 冰雪之城鸿蒙碎片,冰雪之城——土豪玩法攻略
  5. 电商加速进入“拼”时代
  6. 免费etl调度工具Taskctl-Web应用版功能框架及特性
  7. WannaCry 勒索病毒复现及分析,蠕虫传播机制全网源码详细解读 | 原力计划
  8. Arcgis基于格网的道路密度分析
  9. [XenDesktop5.5]+Hyper-V上的Win7+VDA无法启用Aero效果
  10. HotSpot 启动流程