在JAVA中CLOB与Clob是有区别的类型。
(oracle.jdbc.internal.OracleCallableStatement)OracleCallableStatement能接收CLOB的数据类型,
(java.sql.CallableStatement)CallableStatement能接收Clob的数据类型。
CODE示例
PACKAGE
CREATE OR REPLACE PACKAGE BODY cux_test_clob_pkg IS PROCEDURE test_lower_clob(p_parameter_id IN NUMBER, x_out_xml OUT Clob) IS l_temp_str VARCHAR2(32767); l_temp_clob CLOB; BEGIN dbms_lob.createtemporary(x_out_xml, TRUE); l_temp_str := '<?xml version="1.0" encoding="GBK"?>' || fnd_global.newline; dbms_lob.writeappend(lob_loc => x_out_xml, amount => length(l_temp_str), buffer => l_temp_str); END; PROCEDURE test_upper_clob(p_parameter_id IN NUMBER, x_out_xml OUT CLOB) IS l_temp_str VARCHAR2(32767); l_temp_clob CLOB; BEGIN dbms_lob.createtemporary(x_out_xml, TRUE); l_temp_str := '<?xml version="1.0" encoding="GBK"?>' || fnd_global.newline; dbms_lob.writeappend(lob_loc => x_out_xml, amount => length(l_temp_str), buffer => l_temp_str); END; END;
//获取CLOB
private Clob getSuppRegXMLClob(OAPageContext pageContext, OAWebBean webBean,String parameterId){ Clob clob = null; OADBTransaction localOADBTransactionImpl = (OADBTransaction)pageContext.getApplicationModule(webBean).getOADBTransaction(); OracleCallableStatement localCallableStatement = null; LogUtil.of("getSuppRegXMLClob mappingId= "+mappingId+" suppCateMappingId="+suppItemCateMappingId,pageContext).print(pageContext); try { String str = "begin\n" + " cux_test_clob_pkg.test_upper_clob(p_parameter_id => :1,\n" + " x_out_xml => :2);\n" + "end;"; localCallableStatement = (oracle.jdbc.internal.OracleCallableStatement)localOADBTransactionImpl.createCallableStatement(str, 1); localCallableStatement.setObject(1, mappingId); localCallableStatement.registerOutParameter(2, OracleTypes.CLOB); localCallableStatement.execute(); clob = localCallableStatement.getCLOB(2); localCallableStatement.close(); } catch (SQLException localException2) { clob = null;throw new OAException("getSuppRegXMLClob cux_test_clob_pkg.test_lower_cloberror!"+localException2.getMessage()); } finally { try { if (localCallableStatement != null) localCallableStatement.close(); } catch (Exception localException4) { throw new OAException("getSuppRegXMLClob error!"); } } return clob; }
//获取Clob
private CLOB getSuppRegXMLClob(OAPageContext pageContext, OAWebBean webBean,String parameterId){ CLOB clob = null; OADBTransaction localOADBTransactionImpl = (OADBTransaction)pageContext.getApplicationModule(webBean).getOADBTransaction(); CallableStatement localCallableStatement = null; LogUtil.of("getSuppRegXMLClob mappingId= "+mappingId+" suppCateMappingId="+suppItemCateMappingId,pageContext).print(pageContext); try { String str = "begin\n" + " cux_test_clob_pkg.test_upper_clob(p_parameter_id => :1,\n" + " x_out_xml => :2);\n" + "end;"; localCallableStatement = localOADBTransactionImpl.createCallableStatement(str, 1); localCallableStatement.setObject(1, mappingId); localCallableStatement.registerOutParameter(2, OracleTypes.CLOB); localCallableStatement.execute(); clob = localCallableStatement.getClob(2);
localCallableStatement.close(); } catch (SQLException localException2) { clob = null; throw new OAException("getSuppRegXMLClob cux_test_clob_pkg.test_upper_clob!"+localException2.getMessage()); } finally { try { if (localCallableStatement != null) localCallableStatement.close(); } catch (Exception localException4) { throw new OAException("getSuppRegXMLClob error!"); } } return clob; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· Apache Tomcat RCE漏洞复现(CVE-2025-24813)