请问各位如何在JBuilder中利用procedureDataSet组件调用Oracle存储过程(100分)

  • 主题发起人 主题发起人 fima
  • 开始时间 开始时间
F

fima

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,但是不要用CallableStatement,Oracle存储过程返回一组记录集,还有一个输出参数,求各位大虾帮忙写一下相关代码或给予指导,谢谢。
 
try {
/* 准备动态SQL语句 */
PreparedStatement pstmt = conn.prepareStatement(sql);
/* 设置动态SQL参数值 */
pstmt.setString(1, code);
/* 执行查询,并将结果保存到结果集中 */
ResultSet rset = pstmt.executeQuery();
/* 循环获取并处理结果集数据 */
while(rset.next())
article_number = article_number + rset.getString(1) + "篇";
/* 关闭结果集 */
rset.close();
/* 关闭动态SQL语句 */
pstmt.close();
} catch (SQLException e) {}
 
class curvar
{
public static void main (String args [])
throws SQLException, ClassNotFoundException
{
String driver_class = "oracle.jdbc.driver.OracleDriver";
String connect_string = "jdbc:oracle:thin:@slackdog:1521:oracle8";
String query = "begin
:1 := sp_listEmp;
end;
";
Connection conn;
Class.forName(driver_class);
conn = DriverManager.getConnection(connect_string, "scott", "tiger");
CallableStatement cstmt = conn.prepareCall(query);
cstmt.registerOutParameter(1,OracleTypes.CURSOR);
cstmt.execute();
ResultSet rset = (ResultSet)cstmt.getObject(1);
while (rset.next ())
System.out.println( rset.getString (1) );
cstmt.close();
}
}
 
感谢7syw大虾的详细回答,非常感谢。但是我希望是在JBuilder里用porcedureDataSet组件配合paramerRow组件调用存储过程,另外我也不想用CallableStatement。7syw大虾能不能再帮忙想想办法,谢谢。
 
我把代码贴出来,请大家帮忙纠正一下
create or replace procedure "sys"."proc_test"
(v_string out varchar2)
as
begin
v_string := 'test';
end;

procTest.setMetaDataUpdate(MetaDataUpdate.ALL);
procTest.setProcedure(new com.borland.dx.sql.dataset.ProcedureDescriptor(database, "{ call PROC_TEST(?) }", parameterRow, false, Load.ALL));
parameterRow.setColumns(new Column[] {v_string});
String s = "";
parameterRow.setString("v_string",s);
procTest.executeQuery();
//这句话执行出错
s = procTest.getString("v_string");
请问各位到底是什么原因,偶是java菜鸟,大家见谅,解决立即给分。谢谢
 
斑主, 各位大虾,帮忙看一下.我现在用jb调存储过程的怎么也调不起来,我试了写了个没有任何参数的存储过程,但是仍然不能调用,存储过程没有问题,在sql plus里测试通过.各位帮帮忙,给点建议也行.分数不是问题,只要能解决问题.
如果实在不行,我就再等5个人进来,再散分了.郁闷啊..[:(!]
 
我也正在试这个鸟玩意,两天了用queryDataset调用SQLserver的没有没有问题,oracle就不行了
 
我用queryDataSet连是可以的,但是用procedureDataSet就不行了,yangdear,你如果还是调不出来与我联系,qq:79677569
 
由于两位都没有答出来,所以各给50,呵呵
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
875
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部