存储过程中如何返回定义的记录类型数据,不是记录集

TechnoFantasy 2002-04-28 01:45:08
我在包中定义了一个类型(Type),建立了一个函数返回这个类型,那么在Java中如何接收类型数据?
...全文
99 16 打赏 收藏 举报
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
nicholaz 2002-04-30
关注
  • 打赏
  • 举报
回复
TechnoFantasy 2002-04-30
另外对Java和Oracle都熟悉的高手帮我看一下这个问题:
http://www.csdn.net/expert/topic/690/690803.xml?temp=3.229922E-02
  • 打赏
  • 举报
回复
TechnoFantasy 2002-04-30
算了吧,看来是无法直接返回自定义类型了。那么能否将一个自定义类型select到数据集中返回呢?这个自定义类型的变量中的值是我在存储过程的程序中生成的,不是数据库中的数据。
  • 打赏
  • 举报
回复
TechnoFantasy 2002-04-30
算了,送分吧。
  • 打赏
  • 举报
回复
zhptj 2002-04-29
高,实在是高!!
我得学学!
  • 打赏
  • 举报
回复
TechnoFantasy 2002-04-29
function在Java中是可以访问的:

String query = "begin :1 := pag_cs_power.FUN_CS_GETDICTLIST(:2); end;";
CallableStatement cstmt = conn.prepareCall(query);

cstmt.registerOutParameter(1,OracleTypes.CURSOR);
cstmt.setString(2, sIndex );

cstmt.execute();
ResultSet rset1 = (ResultSet)cstmt.getObject(1);

上面调用了一个返回数据集地function,现在的问题函数返回的是自定义类型,在Java中如何调用?
  • 打赏
  • 举报
回复
xinpingf 2002-04-29
看的目瞪口呆……
  • 打赏
  • 举报
回复
billjjg 2002-04-29
返回自定义的类型在 Java 中是比较困难,因为很多类型Java中并不支持,除非你使用的数据库厂家提供其方法。
你所举的例子,如果转化为Cursor返回可以用我前面所说的,至于如何转化完全可以在存储过程中执行
Select field1, field2...
From yourTable
Where ....
-- The condiction for table join with the type you defined. such as: yourTable.DictID = yourType.DictID

....
  • 打赏
  • 举报
回复
billjjg 2002-04-29
无论是function 还是 procedures在 Java中都是可以被调用的,可以通过
CallableStatement对象实现,比如:
可能需要import oracle.jdbc.driver.*; import oracle.sql.* 等
//执行PL/SQL
String query = "{begin procedure_or_function_name(?,?) end;}"
CallableStatement cstmt = conn.conn.prepareCall(query);
cstmt.setString(1,"test");
cstmt.registerOutParameter(2,OracalTypes.CURSOR);
cstmt.execute();

//返回Type

ResultSet rs = ((OracleCallableStatement)cstmt).getCursor(2);

....
  • 打赏
  • 举报
回复
jlandzpa 2002-04-29
不知道这个对你有没有用:
http://www.zhaoyang-db.com.cn/wz/oracle/O8I_2_CHAP_7_1.htm
  • 打赏
  • 举报
回复
alex_fan 2002-04-29
up
返回记录集,记录类型,真是急切的需要搞清楚的事情
  • 打赏
  • 举报
回复
offsider 2002-04-29
关注,强烈关注!
  • 打赏
  • 举报
回复
KingSunSha 2002-04-28
到目前为止,我知道只有procedure才能才外部访问,function是不行的
如果在pl/sql内部调用,那交换自定义类型是没有问题的,但是从外部调用我不知道怎么做
  • 打赏
  • 举报
回复
xinpingf 2002-04-28
偶也正想知道呢,
  • 打赏
  • 举报
回复
TechnoFantasy 2002-04-28
假设我的Type在包中是这样定义的:
TYPE record_dict IS record(
DictID Varchar2(6) , --编号
Dictname Varchar2(200) , --名称
SupIndex Varchar2(6) , --上级索引
DictIndex Varchar2(6) , --编码索引
DictType Varchar2(2)); --编码类型

在包中的一个Function返回值为这种记录类型,那么在Java中如何读取?

  • 打赏
  • 举报
回复
xinpingf 2002-04-28
哦?
帮你up一下
  • 打赏
  • 举报
回复
相关推荐
发帖
Sybase
加入

2589

社区成员

Sybase相关技术讨论区
社区管理员
  • Sybase社区
申请成为管理员
帖子事件
创建了帖子
2002-04-28 01:45
社区公告
暂无公告