第19章 PLSQL中的控制结构
PLSQL循序渐进全面学习教程(全)
PLSQL循序渐进全面学习教程(全)PL/SQL是用于Oracle数据库的编程语言,它结合了SQL语句的数据操作能力和一般编程语言的逻辑控制能力。
PL/SQL循序渐进的全面学习教程将帮助你逐步学习和掌握PL/SQL的各个方面。
1.简介和基础知识:-PL/SQL的概念和背景-PL/SQL的开发工具和环境-PL/SQL和SQL的关系-PL/SQL的基本语法和数据类型2.变量和常量:-PL/SQL变量的声明和使用-不同类型的变量和数据类型-常量的定义和使用3.控制结构:-IF-THEN语句和IF-THEN-ELSE语句-CASE语句的使用-循环语句(FOR循环、WHILE循环)4.异常处理:-异常的概念和分类-异常处理的方法和语句-自定义异常和错误处理5.子程序和函数:-PL/SQL子程序和函数的概念和用途-创建和调用子程序和函数-参数传递和返回值6.游标和结果集:-游标的概念和使用场景-游标的声明、打开、关闭和绑定-使用游标处理结果集和数据集7.触发器:-触发器的概念和作用-创建和使用触发器-触发器的触发事件和触发时机8.包和包体:-包和包体的定义和特点-创建和使用包和包体-包的封装和共享9.过程和函数:-过程和函数的概念和区别-创建和使用过程和函数-过程和函数的编写和调用10.使用PL/SQL开发应用程序:-使用PL/SQL编写数据库操作代码-使用PL/SQL开发业务逻辑-PL/SQL和其他编程语言的集成以上是PL/SQL循序渐进全面学习教程的大纲,你可以根据自己的学习进度逐步深入学习每个主题。
希望这个教程对你学习和掌握PL/SQL编程语言有所帮助!。
了解 PLSQL 条件控制和循环控制
4、PL/SQL 条件控制和循环控制PL/SQL 程序可通过条件或循环结构来控制命令执行的流程。
PL/SQL 提供了丰富的流程控制语句,与Java 一样也有三种控制结构:> 顺序结构构> 条件结构> 循环结构条件控制Java 中的条件控制使用关键字if和switch。
PL/SQL 中关于条件控制的关键字有IF-THEN、IF-THEN-ELSE、IF-THEN-ELSIF 和多分支条件CASE。
> IF-THEN该结构先判断一个条件是否为TRUE,条件成立则执行对应的语句块,与Java 中的if 语句很相似,具体语法是:说明;①用IF 关口字开始,END IF 关键字结束,注意END IF 后面有一个分号。
②条件部分可以不使用括号,但是必须以关键字THEN 来标识条件结束,如果条件成立,则执行THEN 后到对应END IF 之间的语句块内容。
如果条件不成立,则不执行条件语句块的内容。
③Java 结构用一对大括号来包含条件结构体的内容。
PL/SQL 中关键字THEN 到END IF 之间的内容是条件结构体内容。
④条件可以使用关系运算符合逻辑运算符。
> IF-THEN-ELSE语法:兆隆IT云学院,办学最久,专业最全,师资最强,就业最好,QQ:598756835 说明:把ELSE与IF-THEN连在一起使用,如果IF条件不成立则执行就会执行ELSE部分的语句。
> IF-THEN-ELSIF多重条件判断语句。
说明:PL/SQL 中的再次条件判断中使用关键字ELSIF,而Java使用else if。
> CASECASE是一种选择结构的控制语句,可以根据条件从多个执行分支中选择相应的执行动作,也可以作为表达式使用,返回一个值。
类似于java中的switch语句。
语法是:CASE[selector]WHEN表达式1THEN语句序列1;WHEN表达式2THEN语句序列2;WHEN表达式3THEN语句序列3;........[ELSE语句序列N];END CASE;说明:如果存在选择器selector,选择器selector与WHEN后面的表达式匹配,匹配成功就执行THEN后面的语句。
PLSQL教程
一.PL/SQL的基本结构1.一个PL/SQL例子DECLARE--声明一个变量expi rienceqty_on_hand NUMBER(5);BEGIN--从库存中查处网球拍的当前数量并放到变量qty_on_hand中SELECT quantity INTO qty_on_hand FROM inventoryWHERE product = '网球拍';--在库存大于0的情况下IF qty_on_hand > 0 THEN -- check quantity--更新网球拍的在库数量(当前数量减1)UPDATE inventory SET quantity = quantity - 1WHERE product = '网球拍';--在purchase_record这个表中插入一条购买记录INSERT INTO purchase_recordVALUES ('购买网球拍', SYSDATE);ELSE--如果当前库存为0,在purchase_record中插入一条库存不足的记录INSERT INTO purchase_recordVALUES ('网球拍库存不足', SYSDATE);END IF;END;PL/SQL基本上是由select + DML语句(update , insert , delete) + 控制语句(if else , case , loop , etc) 组成一.数据类型:1.NUMBER[(precision,scale)]整数的声明:part_no NUMBER(4);或者 part_no NUMBER(4,0);带小数的number声明:PI NUMBER(3,2) ;整数的赋值:part_no := 9999;PI := 3.14;其他数字类型的类型有PLS_INTEGER,DECIMAL,FLOAT等2.VARCHAR2字符串的声明:V_name VARCHAR2(20);字符串的赋值:V_name := ‘Oracle’;在变量声明时必须指定长度。
oracle PL SQL的基本构成,块结构和基本语法要求,数据类型,变量定义,运算符和函数
oracle PL/SQL的基本构成,块结构和基本语法要求,数据类型,变量定义,运算符和函数关键字: oracle pl/sql 基本构成块结构基本语法要求数据类型变量定义运算符函数特点PL/SQL语言是SQL语言的扩展,具有为程序开发而设计的特性,如数据封装、异常处理、面向对象等特性。
PL/SQL是嵌入到Oracle服务器和开发工具中的,所以具有很高的执行效率和同Oracle数据库的完美结合。
在PL/SQL模块中可以使用查询语句和数据操纵语句(即进行DML操作),这样就可以编写具有数据库事务处理功能的模块。
至于数据定义(DDL)和数据控制(DCL)命令的处理,需要通过Oracle提供的特殊的DMBS_SQL包来进行。
PL/SQL还可以用来编写过程、函数、包及数据库触发器。
过程和函数也称为子程序,在定义时要给出相应的过程名和函数名。
它们可以存储在数据库中成为存储过程和存储函数,并可以由程序来调用,它们在结构上同程序模块类似。
PL/SQL过程化结构的特点是:可将逻辑上相关的语句组织在一个程序块内;通过嵌入或调用子块,构造功能强大的程序;可将一个复杂的问题分解成为一组便于管理、定义和实现的小块。
块结构和基本语法要求PL/SQL程序的基本单元是块(BLOCK),块就是实现一定功能的逻辑模块。
一个PL/SQL程序由一个或多个块组成。
块有固定的结构,也可以嵌套。
一个块可以包括三个部分,每个部分由一个关键字标识。
块中各部分的作用解释如下:(1) DECLARE:声明部分标志。
(2) BEGIN:可执行部分标志。
(3) EXCEPTION:异常处理部分标志。
(4) END;:程序结束标志。
在以下的训练中,将使用函数DBMS_OUTPUT.PUT_LINE显示输出结果。
DBMS_OUTPUT是Oracle提供的包,该包有如下三个用于输出的函数,用于显示PL/SQL程序模块的输出信息。
第一种形式:DBMS_OUTPUT.PUT(字符串表达式);用于输出字符串,但不换行,括号中的参数是要输出的字符串表达式。
实验4PLSQL程序设计(控制结构和嵌入式SQL)
实验4PLSQL程序设计(控制结构和嵌入式SQL)《数据库开发技术》课程之实验四控制结构和嵌入式SQL一、实验目的1.掌握PL/SQL程序设计的基本知识。
2.掌握PL/SQL中控制结构的使用。
具体包括:选择结构(IF语句和CASE语句);循环结构(三种循环语句):3.掌握PL/SQL中SELECT语句和DML语句的正确使用方法。
二、实验内容和要求1.通过CASE语句判断7788雇员的工资等级后输出,工资等级划分条件是:3000(含)以上为高,1500(含)至3000为中,低于1500为低。
执行结果形式如下:工资等级:高PL/SQL 过程已成功完成。
2.用PL/SQL的FOR循环输出以下实心三角形:1 *2 ***3 *****4 *******5 *********3.先创建d_asc表。
再编写一个匿名PL/SQL块,实现往此表插入ASCII码值从32至126的码号和相应码值的字符。
(提示:用CHR()函数, 要求分别用两种循环方法实现)。
附加题:用PL/SQL的循环语句编程,求:12+32+52+...+132+152的值。
执行结果为:656PL/SQL 过程已成功完成。
参考数据:CREA TE TABLE SC(SNO NUMBER(5) ,CNO NUMBER(4) ,GRADE NUMBER(3,1) ,PRIMARY KEY(SNO,CNO));INSERT INTO SC V ALUES(95001,5,92);INSERT INTO SC V ALUES(95002,3,80); INSERT INTO SC V ALUES(95001,1,58); INSERT INTO SC V ALUES(95002,2,90); INSERT INTO SC V ALUES(95003,3,NULL); INSERT INTO SC V ALUES(95001,3,70); INSERT INTO SC V ALUES(95002,1,84.5); INSERT INTO SC V ALUES(95003,2,67); INSERT INTO SC V ALUES(95007,1,44); INSERT INTO SC V ALUES(95007,2,45); INSERT INTO SC V ALUES(95007,3,64); INSERT INTO SC V ALUES(95007,4,34); INSERT INTO SC V ALUES(95007,5,50); INSERT INTO SC V ALUES(95007,6,20); INSERT INTO SC V ALUES(95008,1,34.5); INSERT INTO SC V ALUES(95001,2,85); COMMIT;。
plsql面试题及答案
plsql面试题及答案PL/SQL面试题及答案1. 什么是PL/SQL?PL/SQL是一种过程化编程语言,旨在与Oracle数据库一起使用。
它是在标准SQL语言的基础上扩展而来的,具有更多的编程功能和控制结构。
PL/SQL可以用于编写存储过程、触发器、函数和包等数据库对象。
2. PL/SQL的优势是什么?PL/SQL具有以下几个优势:- 高性能:PL/SQL代码在数据库服务器上直接执行,减少了与数据库之间的通信开销,提高了性能。
- 数据库交互:PL/SQL可以与数据库进行高效交互,支持丰富的SQL语句和事务处理。
- 强大的编程功能:PL/SQL具有条件语句、循环语句、异常处理、游标等功能,使开发人员可以实现更复杂的业务逻辑。
- 结构化编程:PL/SQL支持模块化开发,可以将代码组织成存储过程、函数和包等可重复使用的单元。
- 安全性:PL/SQL提供了一系列的安全特性,包括访问控制、数据封装和异常处理等,确保数据的安全性和完整性。
3. PL/SQL中的控制结构有哪些?PL/SQL提供了以下控制结构:- 条件语句:IF-THEN、IF-THEN-ELSE、IF-THEN-ELSIF。
- 循环语句:LOOP、WHILE、FOR。
- 异常处理:EXCEPTION。
- CASE语句:CASE-WHEN-THEN。
- GOTO语句:用于跳转到指定的标签或代码块。
- NULL语句:用于忽略某些情况下的代码执行。
4. 如何定义变量和常量?在PL/SQL中,可以使用DECLARE语句定义变量和常量。
定义变量时需要指定变量的名称和数据类型,可以选择性地指定初始值。
例如:```sqlDECLAREemp_name VARCHAR2(100) := 'John Doe';emp_salary NUMBER := 5000;pi NUMBER := 3.14;max_attempts CONSTANT NUMBER := 3;```5. 如何使用游标?游标用于在PL/SQL中处理查询结果集。
plsqlj基本用法
plsqlj基本用法PL/SQL是Oracle数据库中的一种过程式语言,用于编写存储过程、函数、触发器等数据库对象。
它具有强大的数据处理和逻辑控制能力,可以在数据库中实现复杂的业务逻辑和数据操作。
PL/SQL的基本用法如下:1.声明变量和常量:可以使用PL/SQL声明变量和常量,并指定其数据类型。
例如:```DECLAREv_name VARCHAR2(100);c_user_id CONSTANT NUMBER(10) := 123;BEGINv_name := 'John';...END;```2.控制结构:PL/SQL提供了IF-THEN-ELSE、LOOP、WHILE、FOR等控制结构,可以进行条件判断和循环操作。
例如:```IF condition THENELSIF condition THEN...ELSE...ENDIF;```3.数据操作:PL/SQL可以使用SQL语句对数据库进行操作,包括查询、插入、更新和删除等操作。
例如:```SELECT column1, column2 INTO v_var1, v_var2 FROM table WHERE condition;INSERT INTO table (column1, column2) VALUES (value1, value2);UPDATE table SET column1 = value WHERE condition;DELETE FROM table WHERE condition;```4.异常处理:PL/SQL可以使用异常处理块来捕获和处理异常。
可以使用它来处理在程序执行过程中可能发生的错误。
例如:```BEGINEXCEPTIONWHEN e某ception1 THEN...WHEN e某ception2 THEN...END;```5.存储过程和函数:PL/SQL可以用来编写存储过程和函数,用于封装一系列的SQL语句和业务逻辑。
10_PLSQL控制结构
成都信息工程学院·计算机系
控制结构
IF逻辑结构 逻辑结构: 逻辑结构 • IF-THEN-END IF • IF-THEN-ELSE-END IF • IF-THEN-ELSIF-END IF
10-2
成都信息工程学院·计算机系
控制结构
IF逻辑结构 逻辑结构
• 语法
IF condition THEN statements; [ELSIF condition THEN statements;] [ELSE statements;] END IF;
10-19
成都信息工程学院·计算机系
FOR Loop
说明 • 计数器只能在 计数器只能在Loop循环内使用;计数器不能在 循环内使用; 循环内使用 计数器不能在loop循 循 环体外部定义 • 可以在循环内部使用计数器的值 • 不能把值分配给计数器
10-20
成都信息工程学院·计算机系
FOR Loop
10-13
成都信息工程学院·计算机系
构造逻辑条件
• 处理 处理NULL值 值
– 使用 NULL操作符处理 使用IS 操作符处理NULL值 操作符处理 值 – 任何包含 任何包含NULL的表达式其值为 的表达式其值为NULL 的表达式其值为 – 用NULL值与表达式连接时, NULL值被当作空串来处理 值与表达式连接时, 值与表达式连接时 值被当作空串来处理
• 例子
IF v_ename = 'OSBORNE' THEN v_mgr := 22; END IF;
10-3
成都信息工程学院·计算
IF 条件
FALSE
THEN Actions (包括下一步的 IFs)
第19章 PLSQL中的控制结构
19.1.1
IF-THEN简单条件语句
简单条件语句IF-THEN主要是用来对某一个单一条件 进行判断。在使用IF-THEN简单条件语句时,如果满足IF 中的指定条件,则会执行THEN语句后面的操作;如果不满 足IF中的指定条件,则会退出分支条件语句。简单条件语句 IF-THEN的语法规则如下: IF expression THEN statement; END IF; 在这个IF-THEN的条件语句中,expression是逻辑表达 式或者关系表达式。如果expression的值为TRUE就会执行 THEN后面的statement语句,否则的话,就会退出IF-THEN 分支条件语句。关键字END IF是IF语句结束的标志。
19.1.3
IF-THEN-ELSEIF多重条件分支语句
IF expression1 THEN statement1; ELSEIF expression2 THEN statement2; ELSE statement3; END IF;
在这个IF-THEN-ELSEIF多重条件分支语句中,如果 expression1的值为TRUE,就会执行statement1语句;如果 expression1的值为FALSE,就判断ELSEIF后面的表达式 expression2,如果expression2的值为TRUE,则会执行statement2 语句;如果expression2的值为FALSE,则会执行ELSE后面的 statement3语句。关键字END IF是IF语句结束的标志。
19.1.3
IF-THEN-ELSEIF多重条件分支语句
IF-THEN-ELSEIF多重条件分支语句主要是用于复杂 条件的分支操作。在IF-THEN-ELSEIF多重条件分支语句时 ,如果满足第一个IF中的指定条件,则会执行其对应的 THEN语句后面的操作;如果不满足第一个IF中的指定条件 ,则会判断第一个ELSEIF后面的条件,如果满足其条件, 就会执行其对应的THEN语句后面的操作,如果不满足其条 件,就会检查第二个ELSEIF后面的条件(如果有的话), 以此类推,直到遇到END IF结束整个条件分支语句的判断 。IF-THEN-ELSEIF多重条件分支语句的语法规则如下:
OraclePLSQL学习笔记(块、控制结构、过程、函数、包)
OraclePLSQL学习笔记(块、控制结构、过程、函数、包)Oracle PL/SQL 学习笔记⼀、PL/SQL 块块定义语法:DECLARE/*定义部分——定义常量、变量、复杂数据类型、游标*/BEGIN/*执⾏部分——PL/SQL语句和SQL语句*/EXCEPTION/*异常处理部分——处理运⾏错误*/END;注:PL/SQL中结束输⼊使⽤‘/’字符dbms_output.put_line(“输出的字符串内容”);dbms_output是提供的系统包;put_line 是该包中的过程,⽤于输出字符串信息。
当使⽤dbms_output包时必须要先激活服务器输出激活服务器输出语句: set serveroutput on⽰例:DECLAREstr varchar(5) --变量的定义BEGINSelect name INTO str FROM emp --INTO是将name的值赋值给strwhere empno=$no; --$no是替代变量EXCEPTIONWhen NO_DATA_FOUND then --PL/SQL预定义的异常类型dbms_output.put_line(“输出的字符串内容”);END;变量定义语法:变量名 [CONSTANT] 数据类型 [NOT NULL] [:=|DEFAULT 默认值或函数]--CONSTANT表⽰常量;--:=设置默认值%TYPE属性⽰例:Name emp.ename%TYPE --name与emp表中ename列的类型和长度相同Sex Name%TYPE --sex与name类型和长度相同%ROWTYPE属性语法:变量名表名%ROWTYPE⽰例:Str T1%ROWTYPE--str变量对应T1表中所有列,并且该表中的所有列的类型与长度相同PL/SQL中使⽤的操作符:= --赋值操作符=> --关联操作符|| --连接操作符PL/SQL游标游标定义语法:CURSOR 游标名 IS SQL语句游标名%ISOPEN 判断游标是否已经打开游标名%FOUND SQL语句有作⽤⾏市,其属性值为TRUE;游标名%NOTFOUND SQL语句没有作⽤⾏市,其属性值为TRUE;游标名%ROWCOUNT 返回SQL语句所作⽤的总⾏数注:游标名默认为‘SQL’⼆、 PL/SQL控制语句1、分⽀语句IF 条件 THEN 执⾏操作ELSEIF 条件THEN 执⾏操作ELSE 执⾏操作END IF;2、多重分⽀语句CASE 表达式WHEN 要判断的值 THEN 执⾏操作WHEN 要判断的值 THEN 执⾏操作ELSE 执⾏操作END CASE;3、循环语句⼀WHILE 条件 LOOP执⾏操作···END LOOP;4、循环语句⼆FOR 变量 IN [REVERSE] 起点值 ..终点值 LOOP执⾏操作END LOOP;注:REVERSE表⽰由终点值到起点值循环; ..是固定格式;三、存储过程创建过程语法:create [or replace] procedure procedure_name [ (argment [ { in| in out }] type, argment [ { in | out | in out } ] type { is | as } <类型.变量的说明> ( 注: 不⽤ declare 语句 ) Begin <执⾏部分> exception <可选的异常处理说明> end; l 这⾥的IN表⽰向存储过程传递参数,OUT表⽰从存储过程返回参数。
PLSQL程序结构
PL/SQL程序结构一、实验学时:2学时二、实验类型:验证性实验。
三、实验目的和主要内容:掌握PL/SQL程序的各组成部分,掌握PL/SQL的控制结构。
主要内容包括:1. 在SQL*Plus中定义PL/SQL块处理。
2. 在PL/SQL执行块中进行循环结构控制。
四、实验仪器设备和材料:Intel 酷睿2双核计算机及其网络、Windows 2000/XP、Oracle 9i安装版。
五、实验方法和步骤:1. 在SQL*Plus中使用PL/SQL块处理EMP表中职工号7788的职工,如果工资小于5000那么把工资更改为5000。
(1)首先采用SCOTT用户登录;(2)查询7788员工的工资是多少;(3)定义声明块和执行块,修改该员工工资;(4)再查询该员工工资是多少;DECLAREv_sal NUMBER(7,2);BEGINSELECT sal INTO v_sal FROM emp WHERE empno = 7788;IF v_sal < 5000THEN UPDATE emp SET sal = 5000 WHERE empno = 7788;END IF;END;2.利用三种循环控制结构向表中插入150条记录。
(1)创建一张表,用来记录循环指针的值;(2)利用LOOP循环向表中插入前50条记录;(3)利用WHILE循环向表中插入51-100条记录;(4)利用FOR循环向表中插入101-150条记录;(5)查看表中的信息。
(1)创建一张表,用来记录循环指针的值;Create table temp_table (num_col number, info_colchar(10)); (2)利用LOOP循环向表中插入前50条记录;DECLAREv_counter BINARY_INTEGER :=1;BEGINLOOPINSERT INTO temp_tablevalues(v_counter,’loop index’);v_counter := v_counter+1;EXIT WHEN v_counter>50;END LOOP;END;(3)利用WHILE循环向表中插入51-100条记录;DECLAREv_counter BINARY_INTEGER :=1;BEGINWHILE v_counter<100 LOOPINSERT INTO temp_tablevalues(v_counter,’loop index’);v_counter := v_counter+1;END LOOP;END;(4)利用FOR循环向表中插入101-150条记录;DECLAREv_counter BINARY_INTEGER :=1;BEGINFOR v_counter IN 101..150 LOOPINSERT INTO temp_tablevalues(v_counter,’loop index’);END LOOP;END;(5)查看表中的信息。
玩转Oracle-PLSQL控制结构
Ⅰ、介绍:条件,循环,顺序控制结构;Ⅱ、条件分支语句;if--then , if--then--else, if--then--elseif --else;㈠、简单的判断语句;SQL> --编写一个过程,可以输入一个员工名,SQL> --如果该员工工资低于2000,就给该员工增加10%;SQL> create or replace procedure mypro(spName varchar2) is2 --定义;3 v_sal emp.sal%type;4 begin5 --执行6 select sal into v_sal from emp where ename=spName;7 --判断;8 if v_sal<2000 then9 update emp set sal=sal*1.1 where ename=spName;10 end if;11 end;121314 /Procedure created.㈡、二重条件分支:if--then--else;--编写一个过程,可以输入一个雇员名,--如果该雇员名的补助不是0,就在原有的基础上增加100,--如果没有补助,就把补助设置为200;SQL> create or replace procedure mypro(spName varchar2) is2 --define3 v_comm m%type;4 begin5 --执行;6 select comm into v_comm from emp where ename=spName; 78 --判断;9 if v_comm<>0 then10 update emp set comm=comm+100 where ename=spName;11 else12 update emp set comm=comm+200 where ename=spName;13 end if;14 end;15 /Procedure created.注意:oracle pl/sql中的不等于是<>而不是!=;㈢、多重条件分支;if--then--elsif--else;注意:s是elsif 而不是elseif;SQL> --编写一个过程,可以输入雇员号,如果该雇员的职位是PRESIDENT,SQL> --借给他增加1000工资,如果是manager,就增加500,SQL> --如果是其他就增加200;SQL>SQL> create or replace procedure mypro(spNo number) is2 --define3 v_job emp.job%type;4 begin5 --执行;6 select job into v_job from emp where empno=spNo;78 --判断;9 if v_job='PRESIDENT' then10 update emp set sal=sal+1000 where empno=spNo;11 elsif v_job='MANAGER' then12 update emp set sal=sal+500 where empno=spNo;13 else14 update emp set sal=sal+200 where empno=spNo;15 end if;16 end;17 /Procedure created.Ⅲ、循环语句:loop㈠简单循环:loop;这种循环以loop开头,以end loop结尾,至少被执行一次;SQL> --现在有一张表用户id,用户名;SQL> --编写一个过程,可以输入用户名,SQL> --并添加10个用户到表中,用户编号从1开始;SQL>SQL> --创建用户表;SQL> create table users(id number(3) , name varchar2(5));Table created.SQL> --创建过程;SQL> create or replace procedure mypro(spName varchar2) is2 --定义部分;3 --定义循环的次数;4 v_num number :=1;5 begin6 --执行部分;7 --循环;8 loop9 insert into users values(v_num , spName);10 --判断是否要推出循环;11 --注意,判断是否相等用=,而赋值的时候用:=;12 exit when v_num=10;13 --自增;14 --注意,判断是否相等用=,而赋值的时候用:=;15 v_num:=v_num+1;16 end loop;17 end;18 /Procedure created.㈡、while循环;基本循环至少要执行一次,而对于while循环来说,只有条件为true时候,才会执行循环体语句,while循环以while,loop开始,以end loop结束;SQL> --编写一个过程,可以输入用户名,SQL> --并添加10个用户到表中,用户编号从11开始;SQL>SQL> --创建过程;SQL> create or replace procedure mypro(spName varchar2) is2 --定义部分;3 --定义循环的次数;4 v_num number :=11;5 begin6 --执行部分;7 --循环;8 while v_num<=20 loop9 insert into users values(v_num , spName);10 --自增;11 --注意,判断是否相等用=,而赋值的时候用:=;12 v_num:=v_num+1;13 end loop;14 end;15 /Procedure created.㈢、for循环;结构如下:beginfor i in reverse 21..30 loopinsert into users values(i,'zhao');end loop;end;我们可以看到,控制变量在隐含中就会不停的增加;SQL> begin2 for i in reverse 21..30 loop3 insert into users values(i,'zhao');4 end loop;5 end;6 /PL/SQL procedure successfully completed.Ⅳ、顺序控制语句:goto,null;㈠、goto语句:用于跳转到特定符号去执行语句,注意由于使用goto语句会增加程序的发杂度,并使得程序的可读性较差,所以建议大家不适用goto语句;SQL> set serveroutput on;SQL> declare2 i int:=1;3 begin4 loop5 dbms_output.put_line('OUt put : '||i);6 if i=10 then7 goto end_loop;8 end if;9 i:=i+1;10 end loop;11 <<end_loop>>12 dbms_output.put_line('Loop END!');13 end;14 /OUt put : 1OUt put : 2OUt put : 3OUt put : 4OUt put : 5OUt put : 6OUt put : 7OUt put : 8OUt put : 9OUt put : 10Loop END!㈡、null:null语句不会执行任何操作,并且会直接将控制传递到下一条语句。
Oracle数据库之PLSQL流程控制语句
Oracle数据库之PLSQL流程控制语句Oracle数据库之PL/SQL流程控制语句在任何计算机编程语⾔(如C,Java,C#等)都有各种流程控制语句,同样,在PL/SQL中也存在这样的流程控制结构。
⼏种常见的流程控制结构:⼀、条件结构1. 简单IF结构-- 简单IF结构IF <布尔表达式> THEN满⾜条件时执⾏的语句END IF;2. IF-ELSE结构-- IF-ELSE结构IF <布尔表达式> THEN满⾜条件时执⾏的语句ELSE不满⾜条件时执⾏的语句END IF;3. 多重IF-- 多重IFIF <布尔表达式1> THEN满⾜条件1时执⾏的语句ELSIF <布尔表达式2> THEN满⾜条件2时执⾏的语句ELSIF <布尔表达式3> THEN满⾜条件3时执⾏的语句ELSE满⾜条件1、2、3均不满⾜时执⾏的语句END IF;注意:ELSIF不能写成ELSEIF⽰例:DECLAREemp_id employee.id%TYPE := &empid;emp_salary employee.salary%TYPE;info VARCHAR2(50);BEGINSELECT salary INTO emp_salary FROM employee WHERE id = emp_id;/* 根据薪资情况判断 */IF emp_salary < 1500 THENinfo := '太少了,不加就辞职!';ELSIF emp_salary <3000 THENinfo := '还将就,先⼲着吧!';ELSEinfo := '⽬前还⽐较满意,以后再看!';END IF;DBMS_OUTPUT.PUT_LINE(info);EXCEPTIONWHEN no_data_found THENDBMS_OUTPUT.PUT_LINE('没有数据~!');WHEN others THENDBMS_OUTPUT.PUT_LINE(sqlcode || '---' || sqlerrm); END;4. CASE语法⼀:CASE 条件表达式WHEN 条件表达式结果1 THEN语句1WHEN 条件表达式结果2 THEN语句2......WHEN 条件表达式结果n THEN语句n[ELSE 条件表达式结果]END CASE;⽰例:DECLAREgrade CHAR(1);BEGINgrade := '&g';CASE gradeWHEN 'A' THEN DBMS_OUTPUT.PUT_LINE('Excellent');WHEN 'B' THEN DBMS_OUTPUT.PUT_LINE('Very Good');WHEN 'C' THEN DBMS_OUTPUT.PUT_LINE('Good');WHEN 'D' THEN DBMS_OUTPUT.PUT_LINE('Fair');WHEN 'F' THEN DBMS_OUTPUT.PUT_LINE('Poor');ELSE DBMS_OUTPUT.PUT_LINE('No such grade');END CASE;END;语法⼆:CASEWHEN 条件表达式1 THEN语句1WHEN 条件表达式2 THEN语句2......WHEN 条件表达式n THEN语句n[ELSE 语句]END CASE;⽰例:DECLAREgrade CHAR(1);BEGINgrade := '&g';CASEWHEN grade = 'A' THEN DBMS_OUTPUT.PUT_LINE('Excellent'); WHEN grade = 'B' THEN DBMS_OUTPUT.PUT_LINE('Very Good'); WHEN grade = 'C' THEN DBMS_OUTPUT.PUT_LINE('Good');WHEN grade = 'D' THEN DBMS_OUTPUT.PUT_LINE('Fair');WHEN grade = 'F' THEN DBMS_OUTPUT.PUT_LINE('Poor');ELSE DBMS_OUTPUT.PUT_LINE('No such grade');END CASE;END;⼆、循环结构1. 简单循环语法:LOOP循环体语句;[EXIT WHEN <条件语句>]END LOOP;⽰例1:DECLAREx NUMBER(2) := 0;BEGINLOOPx := x + 1;DBMS_OUTPUT.PUT_LINE('x的当前值为:'||x);EXIT WHEN x = 10;END LOOP;END;⽰例2:DECLAREx NUMBER := 0;BEGINLOOPDBMS_OUTPUT.PUT_LINE ('循环中: x = ' || TO_CHAR(x));x := x + 1;IF x > 3 THENEXIT;END IF;END LOOP;DBMS_OUTPUT.PUT_LINE(' 循环结束: x = ' || TO_CHAR(x)); END;2. WHILE循环语法:WHILE <布尔表达式> LOOP循环体语句;END LOOP;⽰例1:DECLAREdone BOOLEAN := FALSE;BEGINWHILE done LOOPDBMS_OUTPUT.PUT_LINE ('Oh, no! It's wrong!');done := TRUE;END LOOP;WHILE NOT done LOOPDBMS_OUTPUT.PUT_LINE ('Hello, world!');done := TRUE;END LOOP;END;3. FOR循环语法:[<<标签>>]FOR 循环计数器 IN [ REVERSE ] 下限 .. 上限 LOOP循环体语句;END LOOP [<<标签>>];说明:使⽤关键字REVERSE,循环变量⾃动减1。
PLSQL控制语句(二、循环控制语句)
PLSQL控制语句(⼆、循环控制语句)循环允许重复执⾏代码直到循环条件匹配,PL/SQL中循环主要有LOOP语句和EXIT语句两种,这两种语句相辅相成,⼀起组成了PL/SQL的循环结构。
在PL/SQL中,循环分为四⼤类,本⽂将会讲解其中的3类,最后⼀类游标FOR循环将在游标篇进⾏介绍,PL/SQL中常见的3类循环分别如下: 简单的LOOP循环:这是最基本的循环种类,包含LOOP-END LOOP语句和⼀些EXIT退出语句。
数字式FOR循环:这种循环结构允许指定循环要执⾏的次数,当指定的次数满⾜时才退出循环。
WHILE循环:仅当特定的循环满⾜时才执⾏循环,当条件不再满⾜时终⽌循环。
EXIT语句也分为如下两种类型: EXIT语句:直接退出循环。
EXIT WHEN语句:当WHEN指定的条件满⾜时退出循环。
如果⼀个循环没有退出机制,那么循环循环将⽆穷地运⾏下去,通常称之为死循环,死循环会导致很多严重的后果。
1.LOOP循环 可以使⽤LOOP-END构造最简单的循环,声明语法如下: LOOP executeable statemement(s) END LOOP; executeable statement(s)位置放置的是要进⾏循环的语句块,循环从LOOP语句进⼊,如果没有显⽰地退出程序的执⾏流程将反复地执⾏executeable statement语句块。
2.使⽤EXIT退出循环 EXIT语句会强迫循环⽆条件终⽌,因此当遇到EXIT语句是,循环会⽴即终⽌,并将控制权交给循环下⾯的语句,EXIT使⽤语法如下: LOOP statement 1; statement 2; IF condition THEN EXIT; END IF; END LOOP; statement 3;在LOOP语句内部使⽤IF-THEN语法判断condition条件是否成⽴,如果成⽴,则执⾏EXIT退出循环,此时程序执⾏流程就会跳转到statement 3 中。
plsql基本语法
plsql基本语法PL/SQL基本语法PL/SQL是一种结构化查询语言,用于编写存储过程、触发器、函数和包等数据库对象。
本文将介绍PL/SQL的基本语法,包括变量声明、控制结构、异常处理等。
1. 变量声明在PL/SQL中,可以使用关键字DECLARE来声明变量。
变量可以有不同的数据类型,如整型、浮点型、字符型等。
以下是一个示例:DECLAREnum1 NUMBER := 10;num2 NUMBER := 20;total NUMBER;2. 控制结构PL/SQL支持多种控制结构,如条件语句和循环语句。
条件语句包括IF-THEN-ELSE和CASE语句。
IF-THEN-ELSE用于根据条件执行不同的代码块,示例如下:IF num1 > num2 THENtotal := num1 + num2;ELSEtotal := num1 - num2;END IF;CASE语句用于根据不同的值执行不同的代码块,示例如下:CASE num1WHEN 1 THEN total := num2 + 10;WHEN 2 THEN total := num2 - 10;ELSE total := num2;END CASE;循环语句包括FOR循环和WHILE循环。
FOR循环用于指定循环次数,示例如下:FOR i IN 1..10 LOOPtotal := total + i;END LOOP;WHILE循环用于在满足条件的情况下循环执行代码块,示例如下:WHILE num1 > 0 LOOPtotal := total + num1;num1 := num1 - 1;END LOOP;3. 异常处理PL/SQL提供了异常处理机制,用于捕获和处理运行时错误。
可以使用关键字EXCEPTION来定义异常处理块。
以下是一个示例:BEGINtotal := num1 / num2;EXCEPTIONWHEN ZERO_DIVIDE THENtotal := NULL;END;上述代码中,如果num2为0,则会抛出ZERO_DIVIDE异常,异常处理块会将total赋值为NULL。
Les19-控制结构 PL-SQL讲义 课件
where: condition
is a Boolean variable or expression (TRUE, FALSE, or NULL);
例子:
基本循环
DECLARE
v_ordid
item.ordid%TYPE := 601;
v_counter NUMBER(2) := 1;
BEGIN
END IF;
简单IF语句
如果雇员名字为 Miller,则将工作设为 SALSMAN,部门号设为35,佣金设为薪水的 20%.
Example
... IF v_ename
v_job v_deptno v_new_comm END IF; ...
= 'MILLER' THEN := 'SALESMAN'; := 35; := sal * 0.20;
十九.控制结构
语法:
IF 语句
IF condition THEN statements;
[ELSIF condition THEN statements;]
[ELSE statements;]
END IF;
简单 IF 语句:
如果雇员的名字是Osborne,则将它的ID设 为22.
IF v_ename = 'OSBORNE' THEN v_mgr := 22;
– 循环可以嵌套很多层. – 使用标记来辨认不同的语句块和循环. – 参考某个标记,是用EXIT 语句跳到循环
外部.
嵌套循环和标记
... BEGIN
<<Outer_loop>> LOOP
v_counter := v_counter+1; EXIT WHEN v_counter>10;
PL SQL 概述与流程控制语句
PL/SQL 概述与流程控制语句oracle pl/sql 基本构成结构控制语句:分支选择 loop循环分支结构:分支结构是最基本的程序结构,分支结构由IF语句实现。
使用IF语句,根据条件可以改变程序的逻辑流程。
IF语句有如下的形式:IF条件1 THEN语句序列1;[ELSIF条件2 THEN语句序列2;ELSE语句序列n;]END IF;其中:条件部分是一个逻辑表达式,值只能是真(TRUE)、假(FALSE)或空(NULL)。
语句序列为多条可执行的语句。
根据具体情况,分支结构可以有以下几种形式:IF-THEN-END IFIF-THEN-ELSE-END IFIF-THEN-ELSIF-ELSE-END IF1.IF-THEN-END IF形式这是最简单的IF结构,练习如下:【训练1】如果温度大于30℃,则显示“温度偏高”。
输入并执行以下程序:Sql代码:1.SET SERVEROUTPUT ON2. DECLARE3. V_temprature NUMBER(5):=32;4. V_result BOOLEAN:=false;5. BEGIN6.V_result:= v_temprature >30;7.IF V_result THEN8. DBMS_OUTPUT.PUT_LINE('温度'|| V_temprature ||'度,偏高9. ');10. END IF;11. END;执行结果为:Sql代码:1.温度32度,偏高2.PL/SQL过程已成功完成。
说明:该程序中使用了布尔变量,初值为false,表示温度低于30℃。
表达式v_temprature >30返回值为布尔型,赋给逻辑变量V_result。
如果变量v_temprature的值大于30,则返回值为真,否则为假。
V_result值为真就会执行IF到 END IF之间的输出语句,否则没有输出结果。
PLSQL的书写及语法
详细讲述PLSQL的书写及语法1、PLSQL语法1.1、程序结构PL/SQL程序都是以块(block)为基本单位。
整个PL/SQL块分三部分:声明部分(用declare开头)、执行部分(以begin 开头)和异常处理部分(以exception开头)。
其中执行部分是必须的,其他两个部分可选。
无论PL/SQL程序段的代码量有多大,其基本结构就是由这三部分组成。
而且每条语句均由分号隔开。
/*声明部分,以declare开头*/DECLARE--declare statement/*执行部分,以begin开头,以end结束*/BEGIN--execute statement/*异常处理部分,以exception开始*/EXCEPTIONWHEN exceptioncase THEN--Exception handleEND;例子:/*声明部分,以declare开头*/DECLAREv_job NUMBER(10);/*执行部分,以begin开头*/BEGINDELETE FROM employee;INSERT INTO employee(depno, job)V ALUES (20, 30);SELECT jobINTO v_jobFROM employeeWHERE depno = 20;dbms_output.PUT_LINE(v_job);/*异常处理部分,以exception开始*/EXCEPTIONWHEN no_data_found THENdbms_output.PUT_LINE('No data.');END;执行结果:1.2、数据类型PL/SQL主要用于数据库编程,所以其所有数据类型跟oracle数据库里的字段类型是一一对应的,大体分为数字型、布尔型、字符型和日期型。
1.3、控制结构PL/SQL程序段中有三种程序结构:条件结构、循环结构和顺序结构。
a)、条件结构IF condition1 THENstatement1ELSEIF conditon2 THENstatement2ELSEstatementelseEND IF;b)、循环结构三种循环结构:简单循环(也称作无限循环):LOOPLoopstatementEND LOOP;WHILE 循环:WHILE condition LOOPloopstatementEND LOOP;数字FOR循环:FOR variable IN low_bound . . upper_boundLOOPloopstatementEND LOOP;通常,如果你总是希望循环主体执行至少一次,那么你就应当使用一个简单循环。
PLSQL程序设计
PLSQL程序设计PL/SQL(Procedural Language/Structured Query Language)是一种编程语言,被广泛用于Oracle数据库管理系统中。
它结合了SQL的优势和过程化编程的能力,允许开发人员编写复杂的程序来处理和管理数据。
PL/SQL的程序设计主要包括声明变量、控制结构、循环语句、异常处理和存储过程等。
首先,PL/SQL允许开发人员在程序中声明变量,这些变量可以存储数据,以供程序使用。
在声明变量之后,可以对其进行赋值和引用。
PL/SQL支持多种数据类型,包括数字、字符、日期和布尔值等。
其次,PL/SQL提供了控制结构,可以根据不同的条件来执行不同的代码块。
常用的控制结构包括条件语句(IF-THEN-ELSE)、CASE语句和循环语句(FOR、WHILE)。
这些结构使得开发人员可以根据需要来控制程序的执行流程。
异常处理是PL/SQL的一个重要特性。
通过使用TRY-CATCH块,可以捕捉和处理程序中可能发生的异常。
开发人员可以定义自己的异常,并根据需要采取适当的措施来处理异常,例如记录日志、回滚事务等。
存储过程是PL/SQL的一个重要组成部分。
它允许开发人员将一组SQL语句封装为一个可重复使用的块,并且可以在数据库中进行存储,以便其他程序可以调用。
存储过程在提高性能、简化复杂操作和增强数据安全性方面具有广泛的应用。
此外,PL/SQL还提供了许多其他功能,如游标(用于处理查询结果集)、函数(用于返回单个值)和触发器(用于在数据发生变化时执行相应的操作)等。
这些功能使得开发人员可以更高效地处理和管理数据。
总结起来,PL/SQL是一种强大的程序设计语言,适用于处理和管理Oracle数据库中的数据。
它结合了SQL的优势和过程化编程的能力,在开发数据库应用程序时具有很大的优势。
通过灵活运用PL/SQL的各种功能,开发人员可以编写高效、可靠和安全的程序。
PLSQL语法以及程序编写介绍
PLSQL语法以及程序编写介绍
PL/SQL语法介绍
PL/SQL是一种基于Oracle数据库开发的专用程序设计语言。
它是一种非常强大的程序开发语言,可以对SQL语句进行封装和定义,可以从有限的程序开发语言创建功能强大的程序,可以完成一些特殊的任务,可以为Oracle数据库应用程序提供性能改进和维护。
PL/SQL语法由三个主要部分组成:名称、控制结构和声明。
PL/SQL语句可以是SQL语句(简单SQL或复杂SQL)、存储过程(简单或复杂)等。
1.名称:
PL/SQL的名称包括数据库名称、用户名、表名、字段名、变量名、存储过程名、触发器名、索引名、约束名以及函数名等。
2.控制结构:
PL/SQL控制结构由if、if…else、case、loop、exit、for loop等构成,它们可以按照设定的条件执行、跳转、变化等分支控制。
它们根据程序的要求定义和执行在多次执行情况下执行的代码。
PL/SQL声明包括变量声明、常量声明、异常声明以及游标声明等。
变量声明用于存储和传递数据,而常量声明可以用作常数,比如文本、数字以及数据类型。
异常声明用于捕获和处理在特定情况下产生的异常,而游标声明可以用来识别和访问数据库中的特定记录。
PL/SQL程序编写时,应该按照以下步骤进行:
1、设计程序
在开始编写之前。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IF-THEN-ELSEIF多重条件分支语句 19.1.3 IF-THEN-ELSEIF多重条件分支语句
DECLARE v_salary NUMBER(6,2); -- 定义表示教师工资的变量 v_ deptID VARCHAR2(15); -- 定义表示教师所在院系的变量 BEGIN /*根据输入的教师编号查询教师工资和所在院系 根据输入的教师编号查询教师工资和所在院系 SELECT salary , deptID INTO v_salary, v_ deptID FROM t_teacher WHERE teaID= & teaID; /*如果是计算机系,则将教师工资加上 如果是计算机系, 如果是计算机系 则将教师工资加上300*/ IF v_ deptID =10 THEN UPDATE t_teacher SET salary = v_salary+300 -- 修改教师工资 WHERE teaID =& teaID; /*如果是数学系,则将教师工资加上 如果是数学系, 如果是数学系 则将教师工资加上200*/ ELSEIF v_ deptID =15 THEN UPDATE t_teacher SET salary = v_salary+200 -- 修改教师工资 WHERE teaID =& teaID; /*如果是物理系,则将教师工资加上 如果是物理系, 如果是物理系 则将教师工资加上100*/ ELSE v_ deptID =18 THEN UPDATE t_teacher SET salary = v_salary+100 -- 修改教师工资 WHERE teaID =& teaID; END IF; END;
IF-THEN-ELSEIF多重条件分支语句 19.1.3 IF-THEN-ELSEIF多重条件分支语句
IF expression1 THEN statement1; ELSEIF expression2 THEN statement2; ELSE statement3; END IF;
在这个IF-THEN-ELSEIF多重条件分支语句中,如果 多重条件分支语句中, 在这个 多重条件分支语句中 expression1的值为 的值为TRUE,就会执行 语句; 的值为 ,就会执行statement1语句;如果 语句 expression1的值为 的值为FALSE,就判断 的值为 ,就判断ELSEIF后面的表达式 后面的表达式 expression2,如果 的值为TRUE,则会执行 ,如果expression2的值为 的值为 ,则会执行statement2 语句;如果expression2的值为 的值为FALSE,则会执行 语句;如果 的值为 ,则会执行ELSE后面的 后面的 statement3语句。关键字 语句。 语句结束的标志。 语句 关键字END IF是IF语句结束的标志。 是 语句结束的标志
19.1
分支控制
分支控制语句是通过判断条件表达式是TRUE或者 或者 分支控制语句是通过判断条件表达式是 FALSE来决定程序的执行。PL/SQL中分支控制语句包括 来决定程序的执行。 中分支控制语句包括IF 来决定程序的执行 中分支控制语句包括 语句和多分支的选择的CASE语句。IF语句有可以分为简单 语句。 语句有可以分为简单 语句和多分支的选择的 语句 条件语句IF-THEN、二重条件分支语句 条件语句 、二重条件分支语句IF-THEN-ELSE和 和 多重条件分支语句IF-THEN-ELSEIF。这一节就来介绍 多重条件分支语句 。 PL/SQL中的 语句的用法。多分支的选择的 中的IF语句的用法 中的 语句的用法。多分支的选择的CASE语句将 语句将 节中介绍。 在19.2节中介绍。 节中介绍
IF-THEN-ELSEIF多重条件分支语句 19.1.3 IF-THEN-ELSEIF多重条件分支语句
IF-THEN-ELSEIF多重条件分支语句主要是用于复杂 多重条件分支语句主要是用于复杂 条件的分支操作。 条件的分支操作。在IF-THEN-ELSEIF多重条件分支语句时 多重条件分支语句时 如果满足第一个IF中的指定条件 中的指定条件, ,如果满足第一个 中的指定条件,则会执行其对应的 THEN语句后面的操作;如果不满足第一个 中的指定条件 语句后面的操作; 语句后面的操作 如果不满足第一个IF中的指定条件 则会判断第一个ELSEIF后面的条件,如果满足其条件, 后面的条件, ,则会判断第一个 后面的条件 如果满足其条件, 就会执行其对应的THEN语句后面的操作,如果不满足其条 语句后面的操作, 就会执行其对应的 语句后面的操作 就会检查第二个ELSEIF后面的条件(如果有的话), 后面的条件( 件,就会检查第二个 后面的条件 如果有的话), 以此类推,直到遇到END IF结束整个条件分支语句的判断 以此类推,直到遇到 结束整个条件分支语句的判断 多重条件分支语句的语法规则如下: 。IF-THEN-ELSEIF多重条件分支语句的语法规则如下: 多重条件分支语句的语法规则如下
IF-THEN-ELSE条件分支语句 19.1.2 IF-THEN-ELSE条件分支语句
DECLARE TYPE char_table_type IS TABLE OF VARCHAR2(1) char_tab1 char_table_type; -- 没有初始化嵌套表 char_tab2 char_table_type:= char_table_type() ; -- 初始化嵌套表 : char_tab3 char_table_type:= char_table_type(‘a’,’b’,’c’) ; -- 初始化嵌套表 : BEGIN /*判断嵌套表 判断嵌套表char_tab1是否为 是否为NULL*/ 判断嵌套表 是否为 IF char_tab1 IS NULL THEN DBMS_OUTPUT.PUT_LINE (' char_tab1为NULL'); --显示嵌套表为 显示嵌套表为NULL信息 为 显示嵌套表为 信息 ELSE DBMS_OUTPUT.PUT_LINE(' char_tab1不为 不为NULL'); --显示嵌套表不为 显示嵌套表不为NULL信息 不为 显示嵌套表不为 信息 End IF; /*判断嵌套表 判断嵌套表char_tab2是否为 是否为NULL*/ 判断嵌套表 是否为 IF char_tab2 IS NULL THEN DBMS_OUTPUT.PUT_LINE (' char_tab2为NULL'); --显示嵌套表为 显示嵌套表为NULL信息 为 显示嵌套表为 信息 ELSE DBMS_OUTPUT.PUT_LINE(' char_tab2不为 不为NULL'); --显示嵌套表不为 显示嵌套表不为NULL信息 不为 显示嵌套表不为 信息 End IF; /*判断嵌套表 判断嵌套表char_tab3是否为 是否为NULL*/ 判断嵌套表 是否为 IF char_tab3 IS NULL THEN DBMS_OUTPUT.PUT_LINE (' char_tab3为NULL'); --显示嵌套表为 显示嵌套表为NULL信息 为 显示嵌套表为 信息 ELSE DBMS_OUTPUT.PUT_LINE(' char_tab3不为 不为NULL'); --显示嵌套表不为 显示嵌套表不为NULL信息 不为 显示嵌套表不为 信息 End IF; END;
第19章 19章
PL/SQL中的控制结构 SQL2008 PL/SQL中的控制结构
同其他的高级语言(例如, 、 同其他的高级语言(例如,C、Java等)一样, 等 一样, PL/SQL也可以使用各种控制结构对 也可以使用各种控制结构对PL/SQL的语句块进行控 也可以使用各种控制结构对 的语句块进行控 中的控制结构包括分支结构、 制。PL/SQL中的控制结构包括分支结构、循环结构和顺序 中的控制结构包括分支结构 结构。本章就来介绍PL/SQL中的这几种控制结构的使用方 结构。本章就来介绍 中的这几种控制结构的使用方 法。 分支控制结构; 分支控制结构; 循环控制结构; 循环控制结构; 顺序控制结构。 顺序控制结构。
IF-THEN简单条件语句 19.1.1 IF-THEN简单条件语句
DECLARE v_salary NUMBER(6,2); -- 教师工资 v_ teaID VARCHAR2(15) := ' t156354'; BEGIN /*查询指定教师编号的教师工资 查询指定教师编号的教师工资*/ 查询指定教师编号的教师工资 SELECT salary INTO v_salary FROM t_teacher WHERE teaID= v_ teaID; /*判断教师工资,如果小于 判断教师工资, 则执行更新操作*/ 判断教师工资 如果小于3000则执行更新操作 则执行更新操作 IF v_salary < 3000 THEN UPDATE t_teacher SET salary = v_salary+300 WHERE teaID =v_ teaID; /*判断教师工资,如果大于 判断教师工资, 则执行更新操作*/ 判断教师工资 如果大于3000则执行更新操作 则执行更新操作 IF v_salary >3000 THEN UPDATE t_teacher SET salary = v_salary+100 WHERE teaID =v_ teaID; END IF; END;
IF-THEN简单条件语句 19.1.1 IF-THEN简单条件语句
下面来看一个使用IF-THEN简单条件语句的例子。现 简单条件语句的例子。 下面来看一个使用 简单条件语句的例子 在要查询教师信息表中教师编号为t156354的工资,如果该 的工资, 在要查询教师信息表中教师编号为 的工资 名教师的工资小于3000,那么就将该名教师的工资在原有 名教师的工资小于 , 的基础上加上300;如果工资大于 的基础上加上 ;如果工资大于3000,就将该名教师的工 , 资在原有的基础上加上100。 资在原有的基础上加上 。