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

TechnoFantasy 2002-04-28 01:45:08
我在包中定义了一个类型(Type),建立了一个函数返回这个类型,那么在Java中如何接收类型数据?
...全文
142 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
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一下

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧