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;

posted @ 2013-08-27 09:13  lhw0609  阅读(190)  评论(0)    收藏  举报