java调用带有返回值的oracle存储过程
2011-06-07 00:00
417 查看
项目开发中,需要利用存储过程来返回处理的结果,虽然sql语句熟悉,但是写oracle存储过程还是头一回,现在分享出来。
首先在PL/SQL中建立一个存储过程,
create or replace procedure DIRECTNAME(planId in number,directnamestr out varchar2) is
-- in 表示的是输入的参数,out表示的是存储过程输出的参数
namestr varchar2(200);
CURSOR CUR -- 游标的声明
is
select p.pronam from com_project p
where p.projid = planid;
e CUR%ROWTYPE; --将游标的一行的数据赋给 e
begin
if not CUR %isopen then
open CUR; --游标开启
end if;
fetch CUR into e;
while CUR%found loop
namestr := namestr || e.pronam || ','; -- oracle的字符串连接使用的是 ||,开始我一直使用 + 号报错
fetch CUR into e;
end loop;
close CUR; -- 关闭游标
directnamestr := namestr;
end DIRECTNAME;
可以在PL/SQL Developer中测试,开启SQL窗口:
declare
strn varchar2(20);
begin
directname(8,strn);
dbms_output.put_line(strn);
end;
以下是hibernate的调用:
Connection conn = SessionFactoryUtils.getDataSource(getSessionFactory()).getConnection();
CallableStatement stmt = conn.prepareCall("{call directname(?,?)}");
stmt.setInt(1, 8);
stmt.registerOutParameter(2, Types.VARCHAR);
stmt.execute();
String result = stmt.getString(2);
首先在PL/SQL中建立一个存储过程,
create or replace procedure DIRECTNAME(planId in number,directnamestr out varchar2) is
-- in 表示的是输入的参数,out表示的是存储过程输出的参数
namestr varchar2(200);
CURSOR CUR -- 游标的声明
is
select p.pronam from com_project p
where p.projid = planid;
e CUR%ROWTYPE; --将游标的一行的数据赋给 e
begin
if not CUR %isopen then
open CUR; --游标开启
end if;
fetch CUR into e;
while CUR%found loop
namestr := namestr || e.pronam || ','; -- oracle的字符串连接使用的是 ||,开始我一直使用 + 号报错
fetch CUR into e;
end loop;
close CUR; -- 关闭游标
directnamestr := namestr;
end DIRECTNAME;
可以在PL/SQL Developer中测试,开启SQL窗口:
declare
strn varchar2(20);
begin
directname(8,strn);
dbms_output.put_line(strn);
end;
以下是hibernate的调用:
Connection conn = SessionFactoryUtils.getDataSource(getSessionFactory()).getConnection();
CallableStatement stmt = conn.prepareCall("{call directname(?,?)}");
stmt.setInt(1, 8);
stmt.registerOutParameter(2, Types.VARCHAR);
stmt.execute();
String result = stmt.getString(2);
相关文章推荐
- oracle pl/sql之在java中调用带有输入输出参数的oracle存储过程
- Java如何实现调用oracle带有返回值的存储过程
- java调用oracle带有返回值的存储过程
- Java调用Oracle存储过程(无返回值)
- java调用oracle存储过程的自定义类型(可变数组)。
- Java函数不接受返回值调用
- 用java调用oracle存储过程总结
- JAVA程序调用MYSQL带有OUTPUT参数的存储过程
- c#调用带有安全认证的java webservice
- c#调用带有安全认证的java webservice
- Oracle存储过程中调用JAVA程序
- JAVA 和 C# 调用外部.exe文件,传值并等等exe完成,获取返回值
- java调用oracle存储过程
- java调用oracle存储过程
- c#调用带有安全认证的java webservice
- Java线程中带有返回值的线程Callab…
- java调用ORACLE 存储过程返回值
- Java调用Oracle存储过程应该加上花括号
- 通过java调用存储过程往oracle数据库里插数据(无返回值)
- 用java调用oracle存储过程