首页新闻找找看学习计划

java调用oracle function

0
悬赏园豆:30 [已解决问题] 解决于 2014-10-31 18:02

CREATE OR REPLACE FUNCTION P_get_cktsfn_GT3
(
V_BOK OUT NUMBER,
V_CUR IN OUT SYS_REFCURSOR,
V_MESSAGE out VARCHAR2
)
RETURN NUMBER AS
V_SYS_ERROR NUMBER := 0;
V_ERROR NUMBER(2, 0) :=0;
BEGIN
BEGIN
OPEN V_CUR FOR
SELECT
yzspz_no YZPZXH,
nsrdj_no NSRDJ_NO,
SB_YM SSQ,
OP_DATE+15 JKQX,
YT_ZZS_AMT YT_ZZS_AMT,
YT_XFS_AMT YT_XFS_AMT,
YWLX YWLX
from TSTHS_FN
where xyz_flag=' '
and fh_flag='R'
and xh_flag=' ';
EXCEPTION
WHEN OTHERS THEN
V_ERROR := -1;
V_MESSAGE :='查询反纳信息失败';
END;

IF v_error <> 0 THEN
GOTO errorhandle;
ELSE
BEGIN
v_bok := 0 ;
RETURN 100;
END;
END IF;

<<ERRORHANDLE>>
DBMS_OUTPUT.PUT_LINE('error' || V_SYS_ERROR);
V_BOK := V_ERROR;
RETURN 1;
END;

 

1、其中V_CUR IN OUT SYS_REFCURSOR  “IN OUT”是什么意思?

2、java中调用方式是这样写sql吗?

String strSQL="{? = call P_get_cktsfn_GT3(?,?,?)}"; 

3、V_CUR IN OUT SYS_REFCURSOR  这个游标中,输入的话写成:

st.registerOutParameter(3,oracle.jdbc.OracleTypes.CURSOR);

输出写成:

rs=(ResultSet) st.getObject(3);

这样的话,感觉并没有把参数传进去,输入怎么写进去?输出怎么传出来?

 

 

每问5豆。

问题补充:

每问追加5豆

CaiYongji的主页 CaiYongji | 小虾三级 | 园豆:1267
提问于:2014-10-30 13:15
< >
分享
最佳答案
0

看到全大写的字母,总需要在大脑中转换为小写。。。

1、in out 表示输入输出参数,和c#中的ref 比较雷同,即使参数,也能返回值。

2、java中写法基本是那样,?号表示占位符,需要在真正执行的时候提供参数。

3、表示不懂...

收获园豆:10
幻天芒 | 高人七级 |园豆:36594 | 2014-10-30 14:52

谢谢。

CaiYongji | 园豆:1267 (小虾三级) | 2014-10-30 15:54
其他回答(1)
0

不懂Oracle,不过参数....

1、参数有三种

in / out /in out

sys_refcursor是oracle9i以后系统定义的一个refcursor,主要用在过程中返回结果集。 (这个是Google的)

 

补充:

sys_refcursor是返回结果集,那么in就多余了,不过可能不会出错而已。

 

再补:

别笑,我不懂,本来不想回答的,这家伙私信我的。

收获园豆:20
爱编程的大叔 | 园豆:30505 (高人七级) | 2014-10-30 14:44

哈哈,谢谢大叔

支持(0) 反对(0) CaiYongji | 园豆:1267 (小虾三级) | 2014-10-30 15:53

这家伙够狠,我Oracle都三年没碰了...

支持(0) 反对(0) 幻天芒 | 园豆:36594 (高人七级) | 2014-10-30 16:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册