`
百合不是茶
  • 浏览: 354076 次
社区版块
存档分类
最新评论
阅读更多

PL/SQL也是一门高级语言,所以流程控制是必须要有的,oracle数据库的pl/sql比sqlserver数据库要难,很多pl/sql中有的sqlserver里面没有

 

流程控制;

   分支语句 if 条件 then 结果 else 结果  end if ;

  条件语句 case    when   条件  then  结果;

   循环语句  loop      end loop;    --while循环; for循环

   顺序语句 goto

   null语句

 

下面所有的语句有的写在过程中的有的写在pl/sql块中,pl/sql块中是最方便的

 

----------------分支语句

------------------------------简单的条件判断 if – then

 --问题:编写一个过程,可以输入一个雇员名,
--如果该雇员的工资低于2000,就给该员工工资增加500。

set serveroutput on;--打开输入输出

create or replace procedure pro_1(v_empno number) is
 v_sal emp.sal%type;
begin

   select sal into v_sal from emp where  empno = v_empno;
if v_sal<2000 then
  v_sal:=v_sal+500;
 --更新这个员工的工资
  
   update emp set sal=v_sal where empno=v_empno;
end if;
end;

 

 

 -----------------二重条件分支 if – then – else

 --问题:编写一个过程,可以输入一个雇员名,
--如果该雇员的工资低于2000,就给该员工工资增加500,否则只加50。

set serveroutput on;--打开输入输出

create or replace procedure pro_1(v_empno number) is
 v_sal emp.sal%type;
begin

   select sal into v_sal from emp where  empno = v_empno;
if v_sal<2000 then
  v_sal:=v_sal+500;
else
 v_sal:=v_sal+50;
end if;
 --更新这个员工的工资
     update emp set sal=v_sal where empno=v_empno;

end;

 

 

---------------------多重条件  if then  else if then else
--问题:编写一个过程,
--可以输入一个雇员编号,
--如果该雇员的职位是PRESIDENT就给他的工资增加500,
--如果该雇员的职位是MANAGER就给他的工资增加100,
--其它职位的雇员工资增加50。

create or replace procedure pro_2(v_empno number) is
v_job emp.job%type;
v_sal emp.sal%type;
begin
  select job,sal into v_job,v_sal from emp where empno =v_empno;

  if v_job='PRESIDENT' then
     v_sal:=v_sal+500;
   else if v_job='MANAGER' then
       v_sal:=v_sal+100;
   else
     v_sal:=v_sal+50;
  end if;
 end if;
 --更新数据
  update emp set sal=v_sal where empno=v_empno;

end;

 

------------------------case语句


--case 条件控制
--问题:编写一个过程,
--可以输入一个雇员编号,
--如果该雇员的职位是PRESIDENT就给他的工资增加50,
--如果该雇员的职位是MANAGER就给他的工资增加40,
--CLERK 30

create or replace procedure pro_4(v_empno number) is
--声明变量
v_job emp.job%type;
v_sal emp.sal%type;
begin
      select job,sal into v_job,v_sal from emp where empno =v_empno;
case v_job
  when v_job='PRESIDENT' then
   v_sal:=v_sal+50; 
  when v_job='MANAGER' then
    v_sal:= v_sal+40;
  when  v_sal ='CLERK' then
    v_sal:=v_sal+30;
   else
   null;--
end case;
--更新数据
  update emp set sal=v_sal where empno=v_empno;

end;

 

 

 ----------------------------循环语句

loop循环;

--Loop  相当于java中的do...while
--请编写一个过程,可以输入用户名,
--并循环添加10个用户到emp_user表中,用户编号从1开始增加。

建表;

create table emp_user (userno number(10),username varchar2(10));

 向emp_user表中循环添加10条数据

create or replace procedure pro_3(v_username varchar2)is
v_userid emp_user.userid%type :=1;
begin
--循环
loop
insert into emp_user values(v_userno,v_username);
--v_userid++
v_userid=v_userid+1;
--退出循环
exit when v_userid=11;
end loop;
end;

 

 

-----------------------------while循环
--问题:请编写一个过程,
--可以输入用户名,并循环添加10个用户到users表中,
--用户编号从11开始增加。

建表;

create table emp_user (userno number(10),username varchar2(10));

 

使用while向表中添加数据

create or replace procedure pro_4(v_userno number )is
v_userid emp_user.userid%type :=1;
begin
while v_userid<10 loop
insert into emp_user values(v_userid,v_username);
--v_userid++
v_userid=v_userid+1;

 end loop
end;

 

 

--------------------------for  语句

--for循环
--for i in 1..10 loop
--for i in reverse 1..10 loop

建表;

create table emp_user (userno number(10),username varchar2(10));

使用for向表中添加十条数据

create or replace procedure pro_5(v_userno number)is
begin
  for i in 1..10 loop
insert into emp_user values(i,v_username);
end loop;
end;

 

-----------goto语句

goto语句可以跳转到程序的任何位置,java中已经不用这个关键字了,但是还保留着

createor replace procedure pro_5(v_userno number) is
 i number(20):=1;

begin
  loop
 i:=i+1;
if i=10 then
goto  aaa;
 end if;
end loop;

   dbms_output.put_line('程序执行');
    <<aaa>>;--设置goto的跳转标签
   dbms_output.put_line('早就执行');
end;

 

当i=10时程序将条状到   <<aaa>>;--设置goto的跳转标签 dbms_output.put_line('早就执行');这个地方,标签上一行输出语句将不会输出

0
0
分享到:
评论

相关推荐

    oracle笔记pl/sql流程控制

    oracle笔记pl/sql流程控制,有具体的代码案例,流程控制的知识点笔记!

    pl/sql最新中文手册

    2. **控制流程语句**:这包括条件判断(IF-THEN-ELSIF-ELSE)和循环(WHILE、FOR、LOOP)。这些语句允许根据特定条件执行代码块或重复执行某段代码。 3. **异常处理**:在PL/SQL中,异常处理是通过EXCEPTION关键字...

    oracle10g_pl/sql

    - **流程控制**:包括IF...ELSIF...ELSE、CASE、FOR循环、WHILE循环等结构。 2. **PL/SQL程序单元** - **存储过程**:一组PL/SQL语句,可重复调用,提高代码复用性。 - **函数**:类似于过程,但返回一个值,可...

    PL/SQL 详解

    PL/SQL流程控制语句 PL/SQL支持多种流程控制语句,包括条件判断语句(如IF-THEN-ELSE)、循环语句(如FOR LOOP、WHILE LOOP)等。这些语句使得开发者可以根据不同的条件执行不同的代码路径,增强了程序的灵活性。 ...

    pl/sql64位

    总的来说,64位的PL/SQL Developer是Oracle开发人员的一个强大工具,它可以提供更高效的工作流程,减少因内存限制带来的问题,同时保持易于使用的界面和丰富的功能集。如果你在处理大型数据库或者需要更高的性能,...

    PL/SQL VCS插件安装包+PL/SQL

    PL/SQL VCS插件是为开发者提供的一种增强工具,它与PL/SQL Developer整合,目的是为了更好地管理和控制Oracle数据库中的SQL脚本和存储过程的版本。这个安装包结合了Version Control System (VCS)的功能,如Visual ...

    oracle pl/sql从入门到精通 配套源代码

    1. **基础操作**:包括简单的SQL查询、变量声明、流程控制(循环、分支结构)以及异常处理。 2. **存储过程和函数**:这些是PL/SQL的核心组成部分,它们封装了一系列操作,可以被多次调用,提高代码复用性。书中...

    Oracle PL/SQL程序设计(第5版)(上下册)

    - **基本语法与结构**:包括数据类型、变量声明、流程控制语句(如IF、CASE、LOOP、WHILE)、异常处理等。 #### 二、PL/SQL程序结构 - **块结构**:PL/SQL程序通常被组织成块,每个块由声明部分、执行部分和异常...

    PL/SQL 基本知识

    首先,PL/SQL是一种过程化语言,它允许用户定义变量、控制流程(如循环、条件语句)、处理异常,并且可以嵌入SQL查询,进行数据的增删改查操作。通过使用PL/SQL,数据库管理员和开发者可以更高效地管理和维护数据库...

    Oracle PL/SQL实例编程(PL/SQL经典书籍)

    执行部分包含了SQL语句和流程控制结构,如循环、条件判断等;异常处理部分则用于捕获和处理运行时错误。 2. **变量和数据类型**:PL/SQL支持多种数据类型,包括数值型(NUMBER、BINARY_INTEGER、PLS_INTEGER)、...

    PL/SQL下载

    1. **基础语法**:理解PL/SQL的基本数据类型、变量声明、流程控制结构等。 2. **函数和过程**:掌握如何定义和调用自定义函数和过程。 3. **游标**:了解如何使用游标处理结果集。 4. **异常处理**:学习如何编写...

    PL/SQL编程基础知识

    PL/SQL(Procedural Language for SQL)是一种过程化语言,它结合了SQL的数据操纵功能和过程化语言的控制结构,使用户能够灵活地控制数据操作流程。作为Oracle数据库的核心组成部分之一,PL/SQL在数据库应用程序开发...

    PL/SQL安装包

    1. **结构化**:PL/SQL支持流程控制语句(如IF-THEN-ELSE,CASE,WHILE,FOR循环)和异常处理,使得开发者能够编写复杂的逻辑代码。 2. **集成性**:PL/SQL直接嵌入到Oracle数据库中,可以创建存储过程、函数、...

    pl/sql开发

    1.5 **PL/SQL流程控制** 流程控制语句包括条件语句(IF...THEN...ELSIF...ELSE...END IF)、循环语句(WHILE、FOR、LOOP)以及分支语句(GOTO),用于控制程序的执行流程。 1.6 **PL/SQL的异常处理** 异常处理...

    PL/Sql设计经典

    三、PL/SQL流程控制 PL/SQL支持多种控制结构,如IF-THEN-ELSIF-ELSE、CASE语句用于条件判断,WHILE和FOR循环用于重复执行任务,GOTO语句用于无条件跳转,以及 EXIT 和 CONTINUE 语句来控制循环流程。 四、PL/SQL块 ...

    Oracle Database 12c PL/SQL开发指南 实例源代码

    1. **PL/SQL基础**:PL/SQL的基础语法,如变量声明、数据类型、流程控制语句(如IF-THEN-ELSIF,FOR循环,WHILE循环)、异常处理(BEGIN-EXCEPTION-END结构)等。 2. **函数与过程**:如何定义和调用用户自定义的...

    PL/SQL入门到精通书的源代码

    3. **控制结构**:学习如何使用流程控制语句,如IF、CASE、WHILE和FOR循环,能帮助你在处理数据时做出决策或重复执行特定任务。 4. **游标**:游标是PL/SQL中处理单行记录的重要工具。通过游标,你可以逐行读取查询...

    pl/sql语法详解

    三、PL/SQL流程控制 1. 条件控制:IF-THEN-ELSIF-ELSE结构用于根据条件执行不同代码块。 2. 循环控制:WHILE循环和FOR循环用于重复执行某段代码,直到满足特定条件为止。 3. EXIT和CONTINUE语句:用于提前退出循环或...

    Oracle PL/SQL学习官方教材

    2. **流程控制**:PL/SQL提供了多种流程控制结构,如条件语句(IF-THEN-ELSIF-ELSE)、循环(WHILE、FOR、LOOP)、CASE表达式,以及异常处理(EXCEPTION)。这些结构使得程序可以根据不同条件执行不同的代码段。 3....

    Oracle PL/SQL编程详解

    PL/SQL流程控制语句部分讲解了如何在PL/SQL代码中使用流程控制结构来控制程序的执行流程。这包括条件语句(IF-THEN-ELSE、CASE)、循环语句(LOOP、WHILE、FOR)。这些控制结构使得开发者能够编写出能够根据不同的...

Global site tag (gtag.js) - Google Analytics