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豆
看到全大写的字母,总需要在大脑中转换为小写。。。
1、in out 表示输入输出参数,和c#中的ref 比较雷同,即使参数,也能返回值。
2、java中写法基本是那样,?号表示占位符,需要在真正执行的时候提供参数。
3、表示不懂...
谢谢。
不懂Oracle,不过参数....
1、参数有三种
in / out /in out
sys_refcursor是oracle9i以后系统定义的一个refcursor,主要用在过程中返回结果集。 (这个是Google的)
补充:
sys_refcursor是返回结果集,那么in就多余了,不过可能不会出错而已。
再补:
别笑,我不懂,本来不想回答的,这家伙私信我的。
哈哈,谢谢大叔
这家伙够狠,我Oracle都三年没碰了...