Oracle類型:用戶定義的數據類型使用 「SimpleJdbcCall時」 調用存儲過程中遇到錯誤java.lang.ClassCastException:weblogic的.jdbc.wrapper.array_oracle_sql_Array
create or replace type id_array_input VARRAY(20) OF NUMBER
create or replace type output_data_array VARRAY(20) OF VARCHAR(25)
程序 存儲過程來調用
CREATE OR REPLACE PROCEDURE TESTPROC(id_array in id_array_input,output_data out output_data_array)
as
declare
doc_name varchar2(55);
begin
output_data:=output_data_array();
for i in 1..id_array.count loop
select document_name into doc_name from document_details where doc_id =id_array(i);
output_data.extend;
output_data(i):=doc_name;
end loop;
end;
end TESTPROC;
春季部分:包含呼叫請求映射與在程序作爲一個整數數組,輸出,串
@Autowired
private JdbcTemplate jdbcTemplate;
private SimpleJdbcCall proceCall;
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
@RequestMapping(value="/procedure",method=RequestMethod.GET,produces=MediaType.APPLICATION_JSON_UTF8_VALUE)
public @ResponseBody Object getProcedure(){
List<Integer> aa_array=new ArrayList<Integer>();
aa_array.add(10);
aa_array.add(20);
aa_array.add(30);
Integer[] int_array=new Integer[aa_array.size()];
int_array=aa_array.toArray(int_array);
proceCall=new SimpleJdbcCall(jdbcTemplate).withProcedureName("TESTPROC")
.declareParameters(new SqlParameter("id_array",OracleTypes.ARRAY,"id_array_input"),
new SqlOutParameter("output_data",Types.ARRAY,"output_data_array" ,new SqlReturnArray()));
Map in = Collections.singletonMap("id_array",new SqlArrayValue(int_array));
Map<String,Object> st_array=proceCall.execute(String[].class,in);
return st_array;
}
我恐怕不知道Java,但程序無效。丟失'聲明'和兩個'末端'之一。 –
我已經在聲明中添加了分號,它現在會編譯。 – Chirag