PL/SQL分页
分页技术的实现:
分页是任何一个网站(bbs,网上商城,blog)都会使用到的技术,因此学习pl/sql编程开发就一定要掌握该技术。
无返回值的存储过程
古人云:欲速则不达,为了让大家伙比较容易接受分页过程编写,我还是从简单到复杂,循序渐进的给大家讲解。首先是掌握最简单的存储过程,无返回值的存储过程:
案例:现有一张表book,表结构如下:看图:
书号 书名 出版社
请写一个过程,可以向book表添加书,要求通过java程序调用该过程。
--in:表示这是一个输入参数,默认为in
--out:表示一个输出参数
Sql代码
书号 书名 出版社
请写一个过程,可以向book表添加书,要求通过java程序调用该过程。
--in:表示这是一个输入参数,默认为in
--out:表示一个输出参数
Sql代码
CREATE OR REPLACE PROCEDURE sp_pro7
(
spBookId IN NUMBER,
spbookName IN VARCHAR2,
sppublishHouse IN VARCHAR2)
IS
BEGIN
INSERT INTO book VALUES(spBookId,spbookName,sppublishHouse);
END;
可以先看看过程结构:是否创建成功
SELECT * FROM ALL_SOURCE A WHERE A.name = 'sp_pro7';
查询结果如下:
当然,在此之前必须先创建一张表book
----------------在java中调用
package com.wfc.test;
//调用一个无返回值的过程
import java.sql.*;
public class Test2{
public static void main(String[] args){
Connection ct=null;
CallableStatement cs=null;
try{
//1.加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.得到连接
ct = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","scott","tiger");
//3.创建CallableStatement
cs = ct.prepareCall("{call sp_pro7(?,?,?)}");
//4.给?赋值
cs.setInt(1,10);
cs.setString(2,"笑傲江湖");
cs.setString(3,"人民出版社");
//5.执行
cs.execute();
} catch(Exception e){
e.printStackTrace();
} finally{
//6.关闭各个打开的资源
try {
cs.close();
ct.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}红字的地方要注意,很容易写错!
对于驱动不需要下载,Oracle安装目录里面自带的有!
运行的结果: