Oracle类型:用户定义的数据类型
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;
}
Spring Part:请求映射包含调用过程,其中In作为整数数组,而作为字符串数组
import requests
from bs4 import BeautifulSoup
def getArticle(url):
url = 'http://www.bbc.com/news/business-34421804'
result = requests.get(url)
c = result.content
soup = BeautifulSoup(c)
article_text = ''
article = soup.findAll('p')
for element in article:
article_text += '\n' + ''.join(element.findAll(text = True))
return article_text
答案 0 :(得分:0)
在您的示例中,由于new SqlReturnArray()
而发生异常。请参阅以下代码。这将有效。
procedureCall=new SimpleJdbcCall(jdbctemplate.getDataSource()).withProcedureName("TESTPROC")
.declareParameters( new SqlParameter("id_array",OracleTypes.ARRAY, "COMPANY_COMMITTEE_ID_ARRAY")
,new SqlOutParameter("output_data",Types.ARRAY, "STRING_ARRAY"));
aa_array=alpha.toArray(aa_array);
Map in =Collections.singletonMap("id_array",new SqlArrayValue(aa_array));
Array hi= procedureCall.executeFunction(Array.class,in);
String[] hh=(String[]) hi.getArray();
答案 1 :(得分:-1)
您还可以通过在服务 - >数据源 - >连接池 - &gt;高级:
下的WebLogic管理控制台中禁用“自动换行数据类型”选项来使其工作。