我试图检索Blob值thorugh PL / SQL,Spring和JDBC。
这里是我的PL / SQL
function GETBLOB(pjobid in number)
RETURN bobrecCur
is
vbobrecCur bobrecCur;
begin
OPEN vbobrecCur FOR
SELECT jobid, filecontent
FROM TESTBULKJOBDATAFILE
WHERE jobid = pjobid;
RETURN vbobrecCur;
end GETBLOB
而我的Java代码
this.getDataJdbcCall =
new SimpleJdbcCall( this.jdbcTemplate )
.withFunctionName( SQL_READ_DATA )
.withoutProcedureColumnMetaDataAccess()
.declareParameters(
new SqlOutParameter( "abc", OracleTypes.CURSOR ),
new SqlParameter( "pjobid", OracleTypes.INTEGER )
);
Map input = new HashMap();
input.put( "pjobid", 99999 );
ResultSet result = this.getDataJdbcCall.executeFunction(ResultSet.class , input );
DefaultLobHandler lob = new DefaultLobHandler();
InputStream is = lob.getBlobAsBinaryStream( result, 1 );
我收到以下异常..基本上说ResultSet是空。
例外在线程org.springframework.jdbc.core.JdbcTemplate.processResultSet(JdbcTemplate.java:1120) “主” 显示java.lang.NullPointerException在org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:91)在org.springframework.jdbc.core.JdbcTemplate.extractOutputParameters(JdbcTemplate.java:1089)在org.springframework.jdbc.core.JdbcTemplate $ 5.doInCallableStatement(JdbcTemplate.java:996)在org.springframework.jdbc.core.JdbcTemplate.execute (JdbcTemplate.java:935)在org.springframework.jdbc.core.JdbcTemplate.call(JdbcTemplate.java:984)在org.springframework.jdbc.core.simple.AbstractJdbcCall.executeCallInternal(AbstractJdbcCall.java:364)的组织。 springframework.jdbc.core.simple.AbstractJdbcCall.doExecute(AbstractJdbcCall.java:349)在org.springframework.jdbc.core.simple.SimpleJdbcCall.executeFunction(SimpleJdbcCall.java:137)
我经历了这个问题,这应该为我工作。 但我认为我使用OracleLobHandler的方式是不正确的。
任何人都可以阐明我要去的地方错了任何光线?