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

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流程控制,有具体的代码案例,流程控制的知识点笔记!

    sql、pl/sql教程.rar

    SQL: 结构化查询语言(Structured Query ...PL/SQL: Oracle 扩展的SQL语言,具有完整的流程控制定义。 SQL*Plus: Oracle 常用的工具,用来识别SQL语言和编写、执行PL/SQL代码,它与Oracle 数据库管理系统紧密结合。

    PL/SQL程序设计

    第一章 PL/SQL 程序设计简介 第二章 PL/SQL 块结构和组成元素 第三章 PL/SQL 流程控制语句 第四章 游标的使用 第五章 异常错误处理 第六章 存储函数和过程 第七章 包的创建和应用 第八章 触发器

    PL/SQL编程技术详解

    详细介绍了PL/SQL编程基础,比如事务控制命令、PL/SQL流程控制,PL/SQL的异常处理,游标的使用,PL、SQL编程对象等。

    PL-SQL编程.ppt

    oracle plsql语言 第一节 PL/SQL块的组成 第二节 事务控制命令 第三节 PL/SQL流程控制 第四节 游标的使用 第五节 PL/SQL的异常处理 第六节 PL/SQL示例 第七节 PL/SQL编程对象

    PL/SQL语言的简介

    PL/SQL语言的简介 程序结构 流程控制 异常处理 过程与函数 游标 程序包 触发器

    Oracle PL SQL

    走进Oracle、认识PL/SQL、数据表的基本操作、表中数据的基本操作、数据的基本查询、查询中函数的使用、数据表的高级查询、索引及视图的使用、数据类型、流程控制、游标、存储过程和函数、触发器、异常处理、事务和锁...

    PL-SQL编程 介绍

    PL-SQL语法及游标等的简单介绍 第一节 PL/SQL块的组成 第二节 事务控制命令 第三节 PL/SQL流程控制 第四节 游标的使用 第五节 PL/SQL的异常处理 第六节 PL/SQL示例 第七节 PL/SQL编程对象

    SQL and Pl/SQL培训文档

    SQL(Structure Query Language): 是对关系型数据库(RDBMS)进行操作的标准语言. PL/SQL(Procedural Language/SQL): 在SQL的基础上,增加了过程化处理. ...  流程结构控制   对象类型 存储过程和函数

    PL/SQL 教程 PPT

    第一节 程序块结构语言PL/SQL的组成 定义部分 定义部分 定义部分 定义部分 可执行部分 可执行部分 可执行部分: SQL语句 第二节 事务控制命令 事务提交(COMMIT) ...第三节 PL/SQL的流程控制 条件控制

    oracle PL/SQL

    SQL与编程语言之间的不同在于,SQL没有变量,SQL没有流程控制(分支,循环)。而PL/SQL是结构化的和过程化的结合体,而且最为重要的是,在用户执行多条SQL语句时,每条SQL语句都是逐一的发送给数据库,而PL/SQL可以...

    Oracle PL-SQL编程详解.pdf

    本⽂⽬录: 1. PL/SQL 程序设计简介 2. PL/SQL块结构和组成元素 3. PL/SQL流程控制语句 4. 把游标说透 5. 异常错误处理 6. 把过程与函数说透 7. 程序包的创建与应⽤ 8. 把触发器说透

    pl sql 编程教学

    PL/SQL块的组成介绍;事务控制命令;PL/SQL流程控制;游标的使用;PL/SQL的异常处理;;PL/SQL示例;PL/SQL编程对象

    oracle pl/sql

    介绍PL/SQL程式結構 常用資料型態及變數宣告 指定變數值與變數初始化 SELECT...INTO... 運算 常用的 Oracle Build-in Function 流程控制結構 迴圈

    PL-SQL存储过程 ppt课件

    PL-SQL存储过程 ppt课件 &lt;br&gt;第一节 PL/SQL块的组成 第二节 事务控制命令 第三节 PL/SQL流程控制 第四节 游标的使用 第五节 PL/SQL的异常处理 第六节 PL/SQL示例 第七节 PL/SQL编程对象

    PL-SQL的控制结构

    PL-SQL的控制结构 做一些流程的控制 调试

    Oracle数据库存储过程技术文档.doc

    2.1.3 PL/SQL流程控制 13 2.2 游标(CURSOR) 17 2.2.1 游标的概念 18 2.2.2 游标的属性 18 2.2.3 游标中FOR循环的使用 20 2.2.4 带参数游标的使用方法 20 2.3 动态SQL语句 21 2.4 例外处理 22 2.5 一个完整的PL/SQL...

    PLSQL基础教程

    第三章 PL/SQL流程控制语句 13 §3.1 条件语句 13 §3.2 CASE 表达式 13 §3.3 循环 13 §3.3 标号和GOTO 13 §3.4 NULL 语句 13 第四章 游标的使用 13 §4.1 游标概念 13 §4.1.1 处理显式游标 13 §4.1.2...

    PLSQL程序设计

    第三章 PL/SQL流程控制语句 13 §3.1 条件语句 13 §3.2 CASE 表达式 13 §3.3 循环 13 §3.3 标号和GOTO 13 §3.4 NULL 语句 13 第四章 游标的使用 13 §4.1 游标概念 13 §4.1.1 处理显式游标 13 §4.1.2 处理隐式...

Global site tag (gtag.js) - Google Analytics