oracle 存储过程
例子一:
create or replace procedure protest1 is
begin
insert into mytest values ('文', '123456');
end;
块:dbms_output是包
begin
dbms_output.put_line('hello word!');
end;
注下边是执行关闭输出结果
set serveroutput open;
开启
set serveroutput on;
有定义和执行部分的块
declare
v_username varchar2(20);
v_pw varchar2(20);
begin
--执行部分
select name,password into v_username,v_pw from mytest where password=&pw;
--输出部分
dbms_output.put_line('名字:'||v_username||'密码:'||v_pw);
--异常处理
exception
when no_data_found then
dbms_output.put_line('你输入的密码找不到数据!');
end;
--根据用户名去修改密码
create procedure updatePw(name varchar2,pw varchar2) is
begin
update mytest set password = pw where name = name ;
end;
--java调用存储过程
package lhw.cn.oneedu.procedure; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; /** * java调用存储过程 * @author wen * */ public class OracelProcedureTest { /** * @param args */ 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:oracle", "tianwen", "tianwen"); //创建CallableStatement CallableStatement cs = conn.prepareCall("{call updatePw(?,?)}"); //给?赋值 cs.setString(1, "admin"); cs.setString(2, "5566"); //执行 cs.execute(); cs.close(); //关闭 conn.close(); } catch (Exception e) { e.printStackTrace(); } } }
调用
定义变量
var abc varchar2;
call fun1('5566') into:abc;
print abc;