第12课 pl/sql控制语句
来源:互联网 发布:淘宝买家秀在哪里 编辑:程序博客网 时间:2024/06/06 03:48
Pl/sql控制语句:
1,条件分支:if….then; if….then….else; if…..then…elsif…then .else;
例1:编写一个过程,可以输入一个雇员的姓名,如果他的工资低于2000,就给该雇员工资增加10%;
create or replace procedure sp_06(spname varchar2) is
v_salemp.sal%type;
begin
select sal into v_sal from emp where ename=spname;
if v_sal<2000 then
update emp set sal=sal*1.1 where ename=spname;
endif;
end;
/
说明:定义变量时%type标明该变量为%前面数据的类型,参数%rowtype标明变量为一个数据结构,类型为%前面数据结构类型;
参数%not found为update,select等时有没找到
sqlerrm(。。。)是一个什么函数?
---出错时oracle会自动产生出错信息,可以根据这个来判断错在那里??
例2:编写一个过程,可以输入一个雇员的姓名,如果他的工资低于2000,就给该雇员工资增加10%,否则增加5%;
create or replace procedure sp_06(spname varchar2)is
v_sal emp.sal%type;
begin
select sal into v_sal from emp where ename=spname;
if v_sal<2000 then
update emp set sal=sal*1.1where ename=spname;
else
update emp set sal=sal*1.05 where ename=spname;
endif;
end;
/
例3:编写一个过程,可以输入一个雇员的姓名,如果他的工资低于1000,就给该雇员工资增加10%,低于2000增加5%,否则增加%3;
create or replace procedure sp_06(spname varchar2) is
v_salemp.sal%type;
begin
select sal into v_sal from emp where ename=spname;
if v_sal<1000 then
update emp set sal=sal*1.1 where name=spname;
elsif sal<2000 then
update emp set sal=sal*1.05 where ename=spname;
else
update emp set sal=sal*1.03 where ename=spname;
endif;
end;
/
2 循环语句
Loop
例1:编写一个过程,可以输入用户名,并循环添加10个用户到用户表users中;
A:创建表: create table users values(unamevarchar2(30),usid number(7));
B :创建过程;
create or replace procedure sp_06(spname varchar2) is
begin
loop
insert into users values(spname,i);
exit when i=10;
i:=i+1;
end loop;
end;
/
例2:用whlie循环添加第11个到20个用户到users中
create or replace procedure sp_07(spname varchar2)is
i number:=11;
begin
whilei<=20 loop
insert into user svalues(spname,i);
i:=i+1;
end loop;
end;
/
例3:用for循环插入第20个到30个到user中;
create or replace procedure sp_08 is
begin
for i inreverse 1...10 loop
insert into users values('xt',i);
endloop;
end;
/
这个过程有点问题,不要用for循环
顺序控制语句 goto 这个很少用
Null: 表示什么都不做,用他到控制语句中只是增加程序的可读性;
编写过程时注意 参数表中的in 表示输入参数, out 表示输出参数,必须标明;
在java中调用过程sp_07,在表users中增加记录:如下:
try{eStatementcs=ct.prepareCall("call sp_pro3(?,?)");
CallableStatementcs=ct.prepareCall("call sp_07(?)");
Class.forName("oracle.jdbc.driver.OracleDriver");
Connectionct=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:myora","scott","tiger");
//Callabl
cs.setString(1,"SMITH");
//cs.setInt(2,10);
cs.execute();
cs.close();
ct.close();
}catch(Exception e)
{
e.printStackTrace();
}
- 第12课 pl/sql控制语句
- PL/SQL控制语句
- PL/SQL控制语句
- PL/SQL 控制语句
- pl/sql控制语句集
- oracle pl sql 控制语句
- PL/SQL流程控制语句
- PL/SQL流程控制语句
- PL/SQL--循环控制语句
- PL/SQL程序设计 第三章 PL/SQL流程控制语句
- ORACLE PL/SQL编程之PL/SQL 流程控制语句
- PL/SQL程序设计 第三章 PL/SQL流程控制语句
- 第三章 PL/SQL流程控制语句
- 1.3、PL/SQL流程控制语句
- PL/SQL-3 控制结构语句
- [oracle]pl/sql --控制语句if..
- PL/SQL流程控制语句说明
- PL/SQL之流程控制语句
- 垃圾文件清理助手
- 第11课 oracle中变量及常量的类型定义及应用
- xpath学习
- linux下svn操作
- Android创建前台运行的Service
- 第12课 pl/sql控制语句
- VK Cup 2012 Qualification Round 1 A题解题报告
- 容器sort排序问题
- ubuntu12.04samba服务器配置
- strtok()和strtok_r()
- linux下查看cpu物理个数和逻辑个数
- 【7gyy】密码丢了?揭秘你的密码是如何被偷走的
- TPmini 小白的遥控器
- 【免费xp系统下载介绍的安装主板与电源的具体操作】