java调用存储过程


--无参数的存储过程
create or replace procedure p_insert is
begin
  insert into  EMP.TBLJD values ('2006','湖南邵东');
  commit;
end p_insert;

--没有参数的存储
create or replace procedure p_delete is
begin
  delete  EMP.TBLJD where jdid='2005';
  commit;
end p_delete;

--存储调用存储
create or replace procedure p_execute is
begin
  p_insert;  --实现插入功能的存储
  p_delete;  --实现删除功能的存储
end p_execute;

--输入有参方法 PARAM1 IN VARCHAR2 (in 为传入参数)
CREATE OR REPLACE PROCEDURE PROC_IN(PARAM1 IN VARCHAR2,PARAM2 IN VARCHAR2)IS
BEGIN
INSERT INTO EMP.TBLJD (JDID,JDNAME)VALUES(PARAM1,PARAM2);
COMMIT;
END PROC_IN;

--输入输出方法
CREATE OR REPLACE PROCEDURE PROC_INOUT(newjdidv IN VARCHAR2,newjdnamev in varchar2, newjdid OUT VARCHAR,newjdname OUT VARCHAR)IS
BEGIN
select jdid ,jdname into newjdid,newjdname from emp.TBLJD  WHERE jdid=newjdidv and jdname=newjdnamev;
END PROC_INOUT;

 

 

/****java 调用存储过程的方法****/

 

/*输入方法*/
 /*

Produce proObj = new Produce();
  CallableStatement proc = null;
 try {
  Connection conn = proObj.getConn();
           proc=conn.prepareCall("{call PROC_IN(?,?)}");
           proc.setString(1, "10001");
           proc.setString(2, "中兴通讯");
           proc.execute();
  
 } catch (Exception e) {
  e.printStackTrace();
 }
 */

 

 /*用存储过程的方式执行SQL*/
  /*  
    Produce proObj = new Produce();
  try{
  Connection conn = proObj.getConn();
   CallableStatement proc = null;
  String sql="insert into TBLJD(JDID,JDNAME) values(?,?)";
  proc = conn.prepareCall(sql);
  proc.setString(1,"2000");
  proc.setString(2,"留仙洞");
  proc.executeUpdate();
 
  }catch(Exception e){
   e.printStackTrace();
  }*/
 
  

 

 /*copy 的一些基础知识介绍*/

 

  CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它;

  IS关键词表明后面将跟随一个PL/SQL体。

  BEGIN关键词表明PL/SQL体的开始。

  NULL PL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL体中至少需要有一句;

  END关键词表明PL/SQL体的结束

存储过程创建语法:

 create or replace procedure 存储过程名(param1 in typeparam2 out type) 

as 

变量1 类型(值范围); --vs_msg   VARCHAR2(4000); 

变量2 类型(值范围);

Begin

Select count(*) into 变量1 from 表A where列名=param1

    If (判断条件) then

       Select 列名 into 变量2 from 表A where列名=param1

       Dbms_outputPut_line(‘打印信息’);

    Elsif (判断条件) then

       Dbms_outputPut_line(‘打印信息’);

    Else

       Raise 异常名(NO_DATA_FOUND;

    End if;

Exception

    When others then

       Rollback;

End;

注意事项:

1, 存储过程参数不带取值范围,in表示传入,out表示输出

类型可以使用任意Oracle中的合法类型。

2,  变量带取值范围,后面接分号

3,  在判断语句前最好先用count(*)函数判断是否存在该条操作记录

4,  用select 。。。into。。。给变量赋值

5,  在代码中抛异常用 raise+异常名

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值