oracle中pl/sql编程(二):
set serveroutput on -打开输出选项(这样才可以输出)
set serveroutput off-关闭输出选项
1.包含定义部分和执行部分的pl/sql块
declare
--定义部分
v_ename varchar2(5);--定义字符串变量
begin
--执行部分
select ename into v_ename from emp where empno=&aa;
dbms_output.put_line('用户名:'||v_ename);
end;
/
a).说明:dbms_output是oracle所提供的包(类似于java的开发包),
该包包含一些过程,put_Line就是dbms_ouytput包的一个过程
b).注意&代表要接受从控制台输入的变量
c).into v_ename这里的意思是:把查询出来的ename赋值给v_ename
d)||类似于java中的'+'符号,表示连接
2.在1的基础上加上了sal的变量
declare
--定义部分
v_ename varchar2(5);
v_sal number(7,2);
begin
--执行部分
select ename,sal into v_ename,v_sal from emp where empno=&aa;
dbms_output.put_line('用户名:'||v_ename|| ' 薪水:'||v_sal);
end;
3.包含定义部分,执行部分和例外处理部分
declare
--定义部分
v_ename varchar2(5);
v_sal number(7,2);
begin
--执行部分
select ename,sal into v_ename,v_sal from emp where empno=&aa;
dbms_output.put_line('用户名:'||v_ename|| ' 薪水:'||v_sal);
--异常处理
exception
when no_data_found then
dbms_output.put_line('输入编号错误,请重新输入!');
end;
--案例(编写一个过程,可以输入雇员名,新工资 可修改雇员的工资
,并且在java程序中调用一个存储过程)
create or replace procedure sp_pro3(spName varchar2,newSal number) is
begin
--执行部分
update emp set sal=newSal where ename=spName;
end;
package javastudy;
import java.sql.*;
public class Testit {
public static void main(String[] args) {
try {
// 加载驱动程序
Class.forName("oracle.jdbc.driver.OracleDriver");
// 获得链接
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "scott", "lh621366");
// 创建CallableStatement
CallableStatement cs = conn.prepareCall("{call sp_pro3(?,?)}");
// 给?(参数)赋值
cs.setString(1, "SMITH");
cs.setInt(2, 20);
// 执行(更新)
cs.execute();
// 关闭资源
cs.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}