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. 前置机上如何地址转换_canvas原生层级较高,遮盖自定义tabbar,转换为图片解决...
  2. Java 读取指定目录下的文件名和目录名
  3. html中的容器和语义标签
  4. linux磁盘和文件系统管理
  5. IdentityServer4【QuickStart】之使用asp.net core Identity
  6. linux下mysql-5.5.15安装详细步骤
  7. java memorystream 包_存储在MemoryStream中的裁剪图像中心
  8. javascript和python的关系_JavaScript是否越来越像Python?
  9. 【实用工具】linux Can‘t bind address: Address already in use
  10. 游戏筑基开发之测试篇(C语言)
  11. 计算机声卡的步骤,详解win7 32位系统电脑重装声卡的步骤
  12. 百度地图API的IP定位城市和浏览器定位
  13. 行业边缘丨中国电科发布“海雀”处理器;中科海微获千万融资;联想发布边缘服务器;风河加入CNCF云原生计算基金会成为银牌会员;...
  14. 你能发现什么?又能坚持什么?
  15. t460p加固态硬盘 thinkpad_联想T460p加装固态硬盘
  16. 谁知道qq会员怎么退款呢
  17. 软件测试发展前景进阶路线
  18. 3 FPGA时序约束理论篇之IO约束
  19. 是用bbed工具模拟对块的破坏,并使用rman bock recover进行块恢复
  20. app定制开发的好处

热门文章

  1. 签名和包名version Nameversion Code
  2. Requests中文版本发布
  3. 如何抠图换背景?教你几个抠图换背景的方法
  4. echarts vue图表加载动态数据 vue 数据加载完了,数据没有显示问题
  5. 1000及以内的阶乘
  6. 丹麦哥本哈根大学留学记
  7. 制作篇1 - 宿主机准备制作环境
  8. 如何使用 C# 中的 FileSystemWatcher
  9. marquee(文字滚动)标签
  10. 笑着笑着就哭了,睡着睡着就痛了:QQ伤感日志