PL/SQL 条件分支(二)
来源:互联网 发布:商业数据分析与挖掘 编辑:程序博客网 时间:2024/06/05 01:50
--goto案例
declare
i int:=1;
begin
loop
dbms_output.put_line('输出i='||i);
if i = 10 then
goto end_loop;
end if;
i:=i+1;
end loop;
<<end_loop>>
dbms_output.put_line('循环结束');
end;
--------------------------------------
测试结果为:
输出i=1
输出i=2
输出i=3
输出i=4
输出i=5
输出i=6
输出i=7
输出i=8
输出i=9
输出i=10
循环结束
---------------------------------------------------------------------------------------------------------------
案例:将7788雇员(SCOTT)的comm改为sal的0.1倍
declare
v_sal emp.sal%type;
v_ename emp.ename%type;
begin
select ename,sal into v_ename,v_sal from emp where empno=&no;
if v_sal<3000 then
update emp set comm=sal*0.1 where ename=v_ename;
else
null;
end if;
end;
---------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------
分页案例:
--有一张book表,三个字段(书号,书名,出版社),编写存储过程向book表中添加书,用java调用该过程
create table book(
bookId number(3),
bookName varchar2(50),
publishHouse varchar2(50)
);
--编写过程(in表示一个输入参数,可以省略)
create or replace procedure sp_pro22
(spBookId in number,spbookName in varchar2,sppublishHouse in varchar2) is
begin
insert into book values (spBookId,spbookName,sppublishHouse);
end;
--java代码
/*
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","jsd161102");
//创建CallableStatement
CallableStatement cs = conn.prepareCall("{call sp_pro22(?,?,?)}");
//给?赋值
cs.setInt(1, 10);
cs.setString(2, "笑傲江湖");
cs.setString(3, "人民出版社");
//执行
cs.execute();
*/
==================================================
--有输入和有返回值的存储过程
--输入雇员编号,返回雇员的姓名
create or replace procedure sp_pro33
(spNo in number,spName out varchar2) is
begin
select ename into spName from emp where empno=spNo;
end;
--java代码
/*
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","jsd161102");
//创建CallableStatement
CallableStatement cs = conn.prepareCall("{call sp_pro33(?,?)}");
//给第一个?赋值
cs.setInt(1, 7788);
cs.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR);
//执行
cs.execute();
//取出返回值,要注意?的顺序
String name = cs.getString(2);//第二个?,写2
System.out.println("7788的名字是:"+name);
*/
=================================================================================
扩展案例
--输入雇员编号,返回雇员的姓名,工资,岗位
create or replace procedure sp_pro44
(spNo in number,spName out varchar2,spSal out number,spJob out varchar2) is
begin
select ename,sal,job into spName,spSal,spJob from emp where empno=spNo;
end;
--java代码
/*
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","jsd161102");
//创建CallableStatement
CallableStatement cs = conn.prepareCall("{call sp_pro44(?,?,?,?)}");
//给第一个?赋值
cs.setInt(1, 7788);
cs.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR);
cs.registerOutParameter(3, oracle.jdbc.OracleTypes.DOUBLE);
cs.registerOutParameter(4, oracle.jdbc.OracleTypes.VARCHAR);
//执行
cs.execute();
//取出返回值,要注意?的顺序
String name = cs.getString(2);//第二个?,写2
double sal = cs.getDouble(3);
String job = cs.getString(4);
System.out.println("7788的名字是:"+name+"工资是:"+sal+"工作是:"+job);
*/
- PL/SQL 条件分支(二)
- PL/SQL 条件分支(一)
- PL/SQL条件分支以及循环结构
- pl/sql 条件分支的使用实例
- PL/SQL 条件判断
- PL/SQL 条件语句
- PL/SQL 条件
- oracleday19(复合类型 游标变量 pl/sql 进阶 条件分支语句 loop )
- PL/SQL教程(二)
- PL/SQL教程(二)
- PL/SQL语言(二)
- PL/SQL基础(二)
- pl/sql编程(二)
- pl/sql编程(二)
- PL/SQL执行动态SQL(二)
- 二十五、oracle pl/sql进阶--控制结构(分支,循环,控制)
- 二十五、oracle pl/sql进阶--控制结构(分支,循环,控制)
- 二十五、oracle pl/sql进阶--控制结构(分支,循环,控制)
- fileupload插件调用upload.parseRequest(request)解析得到空值问题
- 通过eclipse发布项目
- C/C++ | 20-7链表,单链表的建立,把’a'–’z’26个字母插入,倒叙,打印
- MS523 直接pin对pin替换RC523|FM17550 无需修改硬件以及软件
- 最小生成树-Prim算法和Kruskal算法
- PL/SQL 条件分支(二)
- 进程和线程的区别与联系
- 剑指offer--面试题20:表示数值的字符串
- 关于juqery对html的lable标签取值、赋值问题
- TeamTalk源码分析之win-client
- poj 3253 Fence Repair(优先队列)
- Android实现固定比例的ImageView
- 微信支付开发demo文件是干什么的简单说明
- KMP算法