技术博客: http://blog.sina.com.cn/s/articlelist_1766082610_0_1.html
1、创建简单的存储过程并调用
一下是一个简单的存储过程的示例:
创建一个简单的存储过程
create procedure testname is
begin
--开始部分
insert into mytable(id,name) values(1,'name1');
end;
代码介绍:
上面的testname是随便命名的存储过程的名字
黑体字是关键字缺一不可
-----------------------------------------------------------------------------
如果上面创建存储过程当中发现了,数据库中已经有了名称为testname的存储过程,可以使用一面的一句话将以前的存储过程给替换掉:
create or replace procedure testname is
begin
--开始执行部分
insert into mytable(id,name) vlaues(2,'name2');
end;
代码中的关键字介绍:
replace:表示如果有了名称为testname的存储过程就替换掉,没有就创建
-----------------------------------------------------------------------------
如果在上面的创建过程中出现了“编译错误”等提示,可以在sql控制台敲入:
show error;
就会显示出上面执行的sql创建存储过程中出现的错误的提示
调用存储过程
1、exec 存储过程名称(参数值1,参数值2,....);
2、call 存储过程名称(参数值1,参数值2,....);
在上面的调用方式中,如果调用的存储胡过程没有参数则不用传参数。直接调用名称即可
2、创建并调用一个带参数的存储过程
创建带参数的存储过程
为某条数据修改字段的数据
create procedure sp_pro3(spName varchar2,newSal number) is
--如果需要定义变量的话可以在is和begin之间定义变量
begin
--执行部分,根据查询条件修改数据
update emp set sal=newSal where ename=spName;
end;
调用带参数的存储过程
exec sp_pro3('scott',9090);
3、创建一个存储过程,并用java程序调用
test.java
class test{
public static void main(String[] args){
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection ct=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:myserver","myname","mypw");
CallbleStatement cs = ct.prepareCall("{call sp_pro3(?,?)}");
cs.setString(1,'name');
cs.setInt(2,100);
cs.execute();
cs.close();
ct.close();
}catch(Exception e){
e.printStackTrace();
}
}
}