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. Nature子刊:古菌基因组的标准化物种分类方法
  2. SAPCAR的简易使用方法
  3. 关于创建SWAP示例
  4. 针对Java中的XSD验证XML
  5. Tomcat启用HTTPS协议配置过程
  6. C++ STL 容器之 deque简单使用
  7. 评选 cms_十大评选和编辑精选:12月评论
  8. 模拟——扫雷游戏(洛谷 P2670)
  9. 喵喵的QQ小程序登录
  10. elasticsearch-1.7.1 集群搭建
  11. opencv4 图像特征匹配_【从零学习OpenCV 4】图像模板匹配
  12. puttygen生成公私钥_如何使用Puttygen生成腻子密钥?
  13. 代码整洁之道1-6章总结
  14. 西门子PLC与Intouch软件以太网通讯
  15. CTFshow 愚人节欢乐赛 部分WP
  16. 使用python内置函数进行常规API接口调用
  17. bootstrap黑色酷炫IT行业个人博客模板
  18. Ubuntu 14.04出现“device not managed”错误及ubuntu可以ping通外网浏览器上不了网。
  19. 猫咪藏在哪个房间python_盘点:猫咪玩“躲猫猫”喜欢藏的几个地方,这下再也不愁找不到了...
  20. 分享一款免费开源的在线文档管理插件

热门文章

  1. 亚马逊化妆品眼影,口红等需要提供哪些报告才可以正常销售呢?提交步骤有哪些?
  2. 【Linux——使用篇】:关于Linux下.bin格式文件的安装
  3. Json-glib的使用
  4. ant 命令语法不正确
  5. require.context
  6. 家用计算机日常使用应注意什么,最全的电脑主机的保养注意事项
  7. TX2手动安装cudnn
  8. carbon安装win7 thinkpad x1_ThinkPad New X1 Carbon是否可以安装Windows 7操作系统?
  9. PHP curl 爬取反 爬的网站,请开启JavaScript并刷新该页.
  10. ATTCK实战系列—红队实战-4