怎么在存储过程中定义out参数是游标?
怎么在java程序中接收存储过程out参数是%rowtype类型的变量
怎么在java程序中接收存储过程out参数是%rowtype类型的变量
解决方案 »
- Oracle安装最后Configuration Assistant这一步装不下去了,求救!
- oracle 的插入问题 高手请进,帮帮我赛!
- 问个简单的Oracle库连接问题,大家帮帮忙哈
- 请问,job有命名规则吗?
- oracle9i中时间格式转换(毫秒级相减)?
- 如果实现定时对数据库进行操作
- *--高手请进--**--一个Sql查询问题--*
- oracle8中sql plus不能执行命令?
- oracle9i 中表空间大小只能设置为最大到1G,再大的话就会出错!
- 有没有什么工具,可以ORACLE中的触发器,存储过程及函数等后台程序的执行过程进行调试?
- oracle性能优化,SQL语句全优化,SQL语句执行效率问题的等深度分析文档
- pl/sql导入数据问题
p_user_id_i in varchar2,
o_cur out sys_refcursor
)
as
begin
open o_cur for select * from test where t1 = p_user_id_i;
end aaaaa1;
/
2.java接收%ROWTYPE?还不如返回一个只有一行的游标。下面的DBI.TYPE.T_SMS_TASK是我自定义的类型,不知道java怎么处理%ROWTYPE,我没试过,一般我都用游标返回%ROWTYPE 的。
public static SMSTaskObj selectSmsTask(int terminateTime) {
ICallableStatement cs = null;
SMSTaskObj taskObj = null;
try {
cs = DbFactory.getInstance().getCallableStatement(
DBI.SERVER_DB_NAME, PROC_SEL_SMS_TASK); cs.setInt(1, terminateTime);
cs.registerOutParameter(2, OracleTypes.STRUCT, DBI.TYPE.T_SMS_TASK);
cs.registerOutParameter(3, OracleTypes.INTEGER);
cs.execute(); int retVal = cs.getInt(3); if (retVal != 0) {
throw new Exception("Oracle procedure PROC_SEL_SMS_TASK error!");
} STRUCT struct = (STRUCT) cs.getObject(2); Datum[] dt = struct.getOracleAttributes(); if (String.valueOf(dt[0].bigDecimalValue()).equals("-1")) {
return null;
} taskObj = new SMSTaskObj(); taskObj.setTaskId(String.valueOf(dt[0].bigDecimalValue()));
taskObj.setTempId(String.valueOf(dt[1].bigDecimalValue()));
taskObj.setUserGroupId(String.valueOf(dt[2].bigDecimalValue()));
taskObj.setUserId(String.valueOf(dt[3].bigDecimalValue()));
taskObj.setTempContent(dt[4].toString());
taskObj.setParamAmount(dt[5].intValue());
taskObj.setPriorityLevel(String.valueOf(dt[6].intValue())); } catch (Exception ex) {
log.error(ex);
} finally {
try {
if (cs != null)
cs.close(); } catch (SQLException sqle) {
log.error(sqle);
}
}
return taskObj;
}