【济南校区】oracle存储过程的使用
1.什么是oracle的存储过程?存储过程是在大型数据库系统中,一组为了完成特定功能的sql语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数来执行它。存储过程是数据库中重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
2.
创建存储过程的语法?
create [or replace]procedure
过程名【(参数名 in/out 数据类型)】
AS
begin
PLSQL
子程序体;
end
;或者
create[or replace]procedure
过程名【(参数名 in/out 数据类型)】
is
begin
PLSQL
子程序体;
end
;
具体使用:
2.1--
创建不带传出参数的存储过程
create or replace procedure pro_owners_add
(
v_name varchar2,--
名称
v_addressid number,--
地址编号
v_housenumber varchar2,--
门牌号
v_watermeter varchar2,--
水表号
v_ownertypeid number--
业主类型
)
is
begin
insert into t_owners
values(seq_owners.nextval,v_name,v_addressid,v_housenumber,v_watermeter,sysdate,v_ownertypeid );
commit;
end;
--
调用不带传出参数的存储过程
call pro_owners_add( '
马大哈',2,'22333','66777',1 );
begin
pro_owners_add( '
马小哈',2,'22333','223344',1);
end;
2.2--
创建带传出参数的存储过程
create or replace procedure pro_owners_add
(
v_name varchar2,--
名称
v_addressid number,--
地址编号
v_housenumber varchar2,--
门牌号
v_watermeter varchar2,--
水表号
v_ownertypeid number,--
业主类型
v_id out number
)
is
begin
--
对传出参数赋值
select seq_owners.nextval into v_id from dual;
--
新增业主
insert into t_owners
values(v_id,v_name,v_addressid,v_housenumber ,v_watermeter,sysdate,v_ownertypeid );
commit;
end;
--
调用传出参数的存储过程
declare
v_id number;
begin
pro_owners_add( '
马二哈',2,'22333','2233666',1,v_id);
dbms_output.put_line(v_id);
end;
下面是java项目调用存储过程的实现方式:
java.sql.Connection conn = null;
java.sql.CallableStatement stmt = null;
//下面采用的是封装的JDBC创建连接
conn =DaoUtil.getConnection();
stmt =conn.prepareCall("{call pro_owners_add(?,?,?,?,?)}");
stmt.setString(1,owners.getName());
stmt.setLong(2,owners.getAddressid());
stmt.setString(3,owners.getHousenumber());
stmt.setString(4,owners.getWatermeter());
stmt.setLong(5,owners.getOwnertypeid());
stmt.execute();
[if !supportLineBreakNewLine]
[endif]
【黑马程序员济南】小鲁哥哥全学科技术整合帖(一贴在手!天下我有!)
如果你想了解更多黑马课程,如果你想加入黑马这个大家庭学习先进技术,光交天下好友,那就快来吧!黑马程序员济南中心联系电话:0531-55696830