plsql存储过程和java

Pl/sql块的结构和java比较

Java程序结构

Public static void mainString [ ] args{

//定义部分

Int a;

Int b;

Try {

a++;//执行的部分

}

Catch (Exception ){

//出现异常的情况执行

 

 

}

}

 

 

实例讲解

案例1

只包括执行部分的pl/sql

 

 

Set serverout on; 打开输出服务

Begin

Dbms_output.put_line(‘hello’);

End;

/

说明:Dbms_outputoracle提供的包(类似的和java的包)该包包含一些过程,put_line就是dbms_line就是dbms_output包的一个过程。

 

案例2 一个带有定义的例子

开启输出服务

 set serveroutput on;

定义变量

 declare

 v_name varchar2(5);

执行内容

 begin

   select ename into v_name from emp where empno=&编号;(查出来的内容放到变量里)&编号代表的是从控制台接收一个值进行查询

   dbms_output.put_line('雇员名字:'||v_name);

   end;

/

执行结束

 

 

问题:再把用户的薪水也显示出来

set serveroutput on;//开服务

定义部分

 declare

 v_name varchar2(5);

 v_sal number(7,2);

执行部分

 begin

   select ename,sal into v_name,v_sal from emp where empno=&编号;(对应关系一定要正确)

   dbms_output.put_line('雇员名字:'||v_name||'薪水为:'||v_sal);

   end;

/

结束

 

 

如果查出来的结果不是个,是多个的话怎么做。要用到参数,使用游标。后面进行讲解。

 

 

案例3 结合三个部分,变量的定义,执行过程,错误处理。

为了避免pl/sql程序的运行错误,提高pl/sql的健壮性,应该对可能的错误进行处理:这里很有必要:

1. 例如在上一个例子中输入了不存在的雇员号,应当做例外处理。

2. 有事出现异常,希望用另外的逻辑处理。

相关说明:

Oracle事先预定义了一些例外,no_data_found 就是找不到数据的例外。

 

 

set serveroutput on;

定义部分

 declare

 v_name varchar2(5);

 v_sal number(7,2);

开始

 begin

 select ename,sal into v_name,v_sal from emp where empno=&编号;

 dbms_output.put_line('雇员名字:'||v_name||'薪水为:'||v_sal);

异常处理

 exception

   when no_data_found then

     dbms_output.put_line('朋友你输入的编号有问题,请查证后再输入!!');

 end;

/

结束

存储过程(plsql基础)

过程用于执行特定的操作:当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out)。通过在过程中使用输入参数,可以将数据传递到执行部分,通过输出参数,可以将执行部分的数据传递到应用的环境。在sql中可以使用 create procedure 命令来建立过程。

案例4

1. 编写一个过程,可以输入雇员的名,新工资,可修改雇员的工资

2. 如何调用过程的两种方法

3. 如何在java中调用存储过程

特别说明:过程会详细说明,先有个概念。

 

创建一个过程

create procedure hfc_a12 (cxname varchar2,newsal number)is

开始执行

begin

  update emp set sal=newsal where ename=cxname;

end;

 

执行:exec hfc_a12(SCOTT,8000);

查询一次看看。

 

Java调用存储过程

 

//加载驱动

Class.forName("oracle.jdbc.driver.OracleDriver");

Connection ct=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "tiger");

//创建CallableStatement调用过程

CallableStatement cs=ct.prepareCall("{call hfc_a12(?,?)}");

   //传进去参数,也就是赋值

cs.setString(1,"SCOTT");//第一个值

    cs.setInt(2, 3423);     //第二个值

    

    //执行

    cs.execute();

    

    

    cs.close();

    ct.close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值