PL/SQL入门教程目录

Oracle PL/SQL入门教程,PL/SQL语法格式/循环语句/条件判断/异常处理

一、PL/SQL简介

1.PL/SQL简介

1.PL/SQl是过程语言PL与结构化语言SQL结合而成的编程语言

2.PL/SQL引擎驻留在Oracle服务器中

3.该引擎接收PL/SQL块并对其进行编译

2.PL/SQL要点

PL/SQL是一种强类型的编程语言,所有的变量都必须在声明之后才可以使用,

变量都要求在declare部分进行声明,对于变量名称有如下规定:

1.变量名可以是字母数字下划线$#等组成

2.所有的变量名称要求以字母开头,不能是Oracle中的关键字

3.变量的长度最多只能为30个字符

4.为了提高PL/SQL的可读性,所有变量采用"v_变量名"进行定义

3.PL/SQL 块

PL/SQL是构成PL/SQL的基本组成单元,

将逻辑上相关的声明和语句组合在一起,

PL/SQL分为三个部分:

二、 PL/SQL 语法和格式:

1.语法格式:

declare 声明部分

begin 可执行部分 exception 异常处理部分 end;1

2

3

4

5

6

7

2.声明变量

变量名 数据类型

3.声明变量时赋值

变量名 数据类型 := 值 ; 注意这里的 : 不可省略

4.PL/SQL中的输出函数

dbms_output.put_line( 要输出的值或者字符串,字符串使用 ’ ’ 包裹);

5.PL/SQL格式举例:

declare v_name varchar2(20) :='我是谁?';

begin

-- 输出操作

dbms_output.put_line('pl/sql的输出操作' || v_name); PL/SQL 中使用||连接(相当于+)

end;1

2

3

4

5

6

6.图1:输出操作结果显示

7.结合SQL语句使用into为变量赋值

declare v_name varchar2(20);

begin -- 通过SQL语句和into关键字为变量赋值 select uname into v_name from user_book where userid=9999; dbms_output.put_line(v_name); -- 打印

end;1

2

3

4

5

6

7

三、两个特殊的字段类型

1.%type指定的字段的类型

使用方式:

变量名 表名.属性名%type;

declare v_name user_book.uname%type; v_id user_book.userid%type; begin -- 为字段赋值 select user_book.uname,user_book.userid into v_name,v_id from user_book where user_book.userid=9999;

-- 输出看结果

dbms_output.put_line(v_id || v_name);

end;1

2

3

4

5

6

7

8

9

10

11

2.%rowtype 代表表中的整行的数据

使用方式:

变量名 表名.属性名%rowtype;

declare v_row user_book%rowtype;

begin

-- 赋值

select * into v_row from user_book where user_book.userid=9999; -- 输出行中的数据: 注意此时必须手动将行内的所有字段写入输出语句,否则会报错

dbms_output.put_line(v_row.uname||v_row.userid||v_row.urole );

end;1

2

3

4

5

6

7

8

三、常用的判断语句

1.if else条件判断语句

if 条件1 then 满足条件1时执行的语句 else 条件2 then 满足条件2时执行的语句1

2

3

4

2.case when 语句

case when 条件1 then 满足条件1时执行的代码 when 条件2 then 满足条件2时执行的代码 when 条件3 then 满足条件3时执行的代码 else 以上条件都不满足时执行的代码 end case;1

2

3

4

5

6

7

8

四、常用的循环语句

1.exit when 退出循环:

格式:

loop 循环执行的语句块; exit when循环结束条件; 步进语句; end loop;1

2

3

4

5

例如:

declare v_i int := 0; -- 声明变量

begin

loop dbms_output.put_line(v_i); -- 循环块: 打印v_i exit when v_i >= 10; -- 结束条件 v_i := v_i+1; -- 步进语句

end loop;

end;1

2

3

4

5

6

7

8

9

结果:

2.while循环:

while 循环结束条件

loop

循环体;

步进语句;

end loop;

例如:

declare v_i int := 0; -- 声明变量

begin

while exit when v_i >= 10; -- 结束条件

loop dbms_output.put_line(v_i); -- 循环块: 打印v_i v_i := v_i+1; -- 步进语句

end loop;

end;1

2

3

4

5

6

7

8

9

3.for in 循环:

for 循环索引变量 in [recerse] – reverse: 反向

循环区域下限…循环区域上线

loop

循环语句块;

end loop ;

例如: 倒序打印1到10(即10到1)

declare

begin

for i in reverse 1..10 -- 从1到10 正序 loop dbms_output.put_line(i); -- 打印i end loop;

end;1

2

3

4

5

6

7

8

结果如图:

五、异常

1.什么是异常?

在运行异常时出现的错误叫做异常1

发生异常后,语句将停止执行,控制权转移到PL/SQL块的异常处理部分

2.异常的三种类型:

预定义异常:当PL/SQL程序违反Oracle规则或超越系统限制时隐式引发; 用户不需要在程序中定义; 非预定义异常:当PL/SQL程序违反Oracle规则或超越系统限制时引发; 用户需要在程序中定义; 用户定义异常:需要用户在程序中定义,显式的在程序中引发;1

2

3

4

5

6

7

3.异常处理程序的语法:

begin 常规代码块; exception when 异常条件1满足 then 异常条件1满足时执行的代码 when 异常条件2满足 then 异常条件2满足时执行的代码 when others then 都不满足时执行的代码 end;1

2

3

4

5

6

7

8

4.常见的预定义异常:

-- 数据过多: too_many_rows -- 查询的数据不存在: no_data_found1

2

例如:

declare v_error exception; v_name user_book.uname%type;

begin select uname into v_name from user_book where user_book.userid=100000; -- 此时的userid是不存在的

end;1

2

3

4

5

6

7

图:预定义异常

5.用户自定义异常

declare

declare v_error exception; v_name user_book.uname%type;

begin select uname into v_name from user_book where user_book.userid=1001; if v_name = '张三' then -- 如果满足条件则返回v_error raise v_error; end if; exception when v_error then -- 当出现此异常的时候触发 dbms_output.put_line('原来是张三啊,抛个异常给你吧');

end;1

2

3

4

5

6

7

8

9

10

11

12

13

6.图:满足自定义条件时触发自定义异常

结束

其他部分小白会陆续更新噢,老板麻烦点个赞再走嘛~~~

文章来源: blog.csdn.net,作者:White_i,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/White_i/article/details/109161568

oracle sql循环判断语句怎么写,Oracle 非常详细的 PL/SQL入门教程,PL/SQL语法格式/循环语句/条件判断/异常处理...相关推荐

  1. 在ABAP的SQL语句中写Oracle Hints

    在ABAP的SQL语句中写Oracle Hints ①用过的两个写法: 1.指定使用全表扫描:%_HINTS ORACLE 'FULL(table_name)' 2.指定索引:%_HINTS ORAC ...

  2. php 三元运算 简写,es6 三元运算(三元类目)符语法与简写,多条件判断与??::形式 - Laravel学习网...

    三元运算符就是替代传统if-else语句让更简洁. 一.三元运算标准写法 我们传统的写法为: const x = 20; let answer; if (x > 10) { answer = ' ...

  3. 【Python入门教程】第57篇 循环进阶之模拟do…while语句

    本篇我们学习如何在 Python 中模拟 do-while 循环语句. do-while 循环语句 许多编程语言,例如 JavaScript.Java. C# 等,都提供了 do-while 循环语句 ...

  4. php基础教程 第六步 学习数组以及条件判断switch补充

    条件语句 switch 在上一节的学习中,学习了php的条件语句if.在php编程中进行条件判断还可以使用switch语句.switch语句语法如下: <?php switch (值或表达式) ...

  5. pythoniter雪峰_[雪峰磁针石博客]python3快速入门教程1 turtle绘图-3循环

    Published: 日 02 九月 2018 语法基础 for语句 Python的for语句针对序列(列表或字符串等)中的子项进行循环,按它们在序列中的顺序来进行迭代. 1 2 3 4 5 6 7 ...

  6. oracle中删除表字段 sql语句怎么写,oracle使用sql语句增加字段示例(sql删除字段语句)...

    添加字段的语法:alter table tablename add (column datatype [default value][null/not null],-.); 修改字段的语法:alter ...

  7. oracle查询表字段sql语句怎么写,oracle联合查询并更新一个表字段的sql语句

    更新某一个字段写起来简单,也容易理解: UPDATE tablea A SET A.name=(select name from tableb B where A.id=B.id) 更新多个字段就显得 ...

  8. oracle insert if语句怎么写,oracle存储过程的调用(insert 语句的存储过程)

    //存储过程 create or replace procedure ADDDDD( pid in number, pname in VARCHAR2 ) is begin INSERT INTO s ...

  9. delete oracle 语句怎么写,Oracle下Delete语句

    Delete语句 基本语法: delete from 表名 where 条件 注意事项: 1,如果不使用where子句,将表中所有数据全部删除 delete from test; 2,如果要删除某列的 ...

最新文章

  1. Kubernetes 弹性伸缩全场景解读(五) - 定时伸缩组件发布与开源
  2. [WinSock]封装WSAAsyncSelect!
  3. MATLAB工具箱介绍
  4. mysql kill_Mysql使用kill命令解决死锁问题(杀死某条正在执行的sql语句)
  5. android 调用c wcf服务,如何使用命名管道从c调用WCF方法?
  6. CountDownLatch线程同步辅助
  7. C#中Math.Round()实现中国式四舍五入
  8. Unity3D插件 Puppet3D的使用
  9. AlphaBlend 详解
  10. C++ 长度不固定的二维数组传参
  11. day3-作业(18-23)(java泛型总结一)
  12. Microsoft 365独家安全解决方案
  13. android实现高德地图集成
  14. 几张表格怎么联动_在excel 中,怎样实现数据关联?:excel怎么把几个表格的数据联动...
  15. Qiyuan - 接小球游戏4.0
  16. CentOS6.5安装部署***服务器
  17. gitblit+jenkins本地服务
  18. unity 在game视图模型穿插问题
  19. 快速上手 Flutter 空安全
  20. OSChina 周五乱弹 —— 破手机比 2080ti 核动力煤气灶还贵

热门文章

  1. python的messagebox的用法_Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解...
  2. Python实战:利用Tkinter实现屏保程序
  3. 使用脚本巧解office安装源问题(修正版)
  4. 如何让SqlParameter的值为null 传入SQL
  5. maven+junit生成报告
  6. Win10如何升级Win11详细操作步骤
  7. 自动化运维工具之pxe+kickstart
  8. 【CASS精品教程】CASS自动插入DOM影像(附插件下载)
  9. 雷达覆盖_ssl1232_计算几何
  10. 下载numpy的时候,出现CondaError错误