用pl/sql自己编写简单的存储过程及jdbc调用存储过程

来源:互联网 发布:plsql跨数据库复制表 编辑:程序博客网 时间:2024/05/30 04:11

         最近离职在找工作看到很多公司都要求要懂存储过程,真是烦,公司有专门的DBA(数据库管理员),自己做的那些项目也刚好没用到存储过程,一直都是只闻其声不见其人。现在这么多家公司有要求,我不得不找了个时间去学习了下。发现一般的存储过程还真是简单。先来说说没带参数的,有带参数的以后有时间再来。


先装好ORACLE,我用PL/SQL这个工具来编写存储过程。

 

       一步步来吧。

 

1、创建一张测试表,很简单的测试表表名就叫test吧。

create table test(name varchar2(30),password varchar2(30));

创建了两个字段的超简单的表,待会要用来测试存储过程的。

2、开始创建存储过程了,先来了解一下什么是存储过程吧。

       存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

       我做的这个存储过程小案例是完成插入的功能,调用该存储过程之后呢,就往这张test表里头插入一条数据。

存储过程有一些特定的格式,下面的案例红色部分是书写存储过程中规定死要那样写的。

 create or replace proceduresp_pro6 is
begin

  insert into test values('你好','这是密码');
end;

       其实也可以这样写:

create  procedure sp_pro6 is
begin
  insert into test values('你好','这是密码');
end;

/

但是这样写没刚才那样写的保险。这个sp_pro6就是你自己命名的要让存储过程叫什么名称由你自己来定。insert into test values('你好','这是密码');  这一句是你要存储过程做的事情,我这边是往表里头插入数据。注意最后一行有个斜杠,不是我输错了,而是在PL/SQL中 你要表达自己语句已经写完了,那就在最后一行打个/。这样pl/sql才会懂。

现在存储过程写完了,我们就可以来执行他了。执行的方法有两种。

3、执行存储过程:一种是用exec 存储过程名,另一种是call 存储过程名。这两种还有一点点的区别。

先来看第一种,你在调用之前可以先select * from test;看看表里头是否有数据,执行完后再查一遍看看变化,要调用刚刚写的存储过程的话可以这样写,

exec sp_pro6;     

这样就调用成功了。

注意第二种的话,要这样写:

call sp_pro6();

刚开始我一直写call sp_pro6根本就调用不了,后来才试了加括号写才成功了。

现在可以查询下这张表的变化了。

4、用JDBC调用存储过程?

打开myeclipse,随便创建一个JAVA PROJECT项目,我建了一个类叫TestSp,类里头的内容如下:


package com.test;


import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;


public class TestSp
{
public static void main(String[] args)
{
try
{
//
1.注册驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//
2.打开连接
Connection ct = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","scott","scott");
//
3.调用存储过程
CallableStatement cStatement = ct.prepareCall("{call sp_pro6()}");
//
4.执行存储过程
cStatement.execute();
//
5.关闭连接
ct.close();
} catch (Exception e)
{
e.printStackTrace();
}
}
}

前面1.2两步就是JDBC访问数据库的基本步骤,记得右击项目名称点击properties ,找到java build Path ,点击Libraries,  点击add external jars,找到你oracle的安装目录,引入这个ojdbc14.jar   我的是在D:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar

       OK,可以执行了,你再去select * from test 就会发现又添加了一条数据,这说明存储过程调用成功了。

       ps:我刚开始遇到就是在pl/sql中直接调用存储过程可以成功,但是在myeclipse中调用却没成功,而且代码不报错,完全是正确的,后来,重新编译,或者重启myeclipse,问题解决了。写得真累。

原创粉丝点击