您的位置:首页 > 数据库

PL/SQL

2016-04-03 13:30 417 查看
set serveroutput on

begin

dbms_output.put_line('hello');

end;



declare

-- 定义变量

v_ename varchar2(5);

v_sal number(7,2);

begin

-- 执行部分

select ename,sal into v_ename,v_sal from emp where empno=&no;

-- 在控制台显示

dbms_output.put_line('雇员名:'||v_ename||'工资:'||v_sal);

-- 异常处理

exception

when no_data_found then 

dbms_output.put_line('编号输入有误!请重新输入');

end;

创建存储过程

create procedure sp_pro3(spName varchar2, newSal number) is

begin

--执行部分,根据用户名修改工资

update emp set sal=newSal where ename=spName;

end;

调用存储过程,两种都可以

exec sp_pro3('SCOTT',4000);

call sp_pro3('SCOTT',4500);

Java中调用存储过程

try{
// 1.加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
// 2.得到连接
Connection ct = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","scott","tiger");
// 3.创建CallableStatement
CallableStatement cs = ct.prepareCall("{call sp_pro3(?,?)}");
// 4.给?赋值
cs.setString(1, "SCOTT");
cs.setInt(2, 5000);
// 5.执行
cs.execute();
// 关闭
cs.close();
ct.close();

}catch(Exception e){
e.printStackTrace();

}

函数

-- 输入雇员姓名,返回该雇员年薪

create function sp_fun2(spName varchar2) return number is yearSal number(7,2);

begin

-- 执行部分

select sal*12+nvl(comm,0)*12 into yearSal from emp where ename=spName;

return yearSal;

end;

查看错误 show error;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: