В настоящее время я тестирую Spring Framework как новый способ обработки наших соединений. Я нахожусь в процессе тестирования вызова функции, которая возвращает REF-курсор от simpleJdbcCall. Модульный тест, который я запускаю, продолжает выдавать исключение BadSqlGrammarException, и я не уверен, откуда возникла проблема, поскольку я новичок в весну.
Вот код:
@Autowired
private SimpleJdbcCall simpleJdbcCall;
private final String schema_name = "xxlt";
private final String procedure_catalog = "xxlt_bpg_std_width_pkg";
private final String procedure_name = "get_std_rods";
public List<StandardRods> getDefaultRodMatAndColor(String series, String style, String material, String color)
{
simpleJdbcCall.withSchemaName(schema_name).withCatalogName(procedure_catalog).withProcedureName(procedure_name).useInParameterNames("p_series_ind", "p_style_ind", "p_material_ind", "p_color_ind")
.returningResultSet("lref", BeanPropertyRowMapper.newInstance(StandardRods.class));
MapSqlParameterSource paramMap = new MapSqlParameterSource();
paramMap.addValue("p_series_ind", series, Types.VARCHAR);
paramMap.addValue("p_style_ind", style, Types.VARCHAR);
paramMap.addValue("p_material_ind", material, Types.VARCHAR);
paramMap.addValue("p_color_ind", color, Types.VARCHAR);
Map m = simpleJdbcCall.execute(paramMap);
return (List) m.get("lref");
Процедура:
FUNCTION get_std_rods (p_series_ind IN varchar2, p_style_ind IN varchar2, p_material_ind IN varchar2, p_color_ind IN varchar2)
return SYS_REFCURSOR IS lref SYS_REFCURSOR;
BEGIN
OPEN lref FOR
SELECT bbv.default_rod_mat, bbv.default_rod_color
FROM xxlt.xxlt_bpg_belt_val bbv
WHERE bbv.series_ind = p_series_ind AND
bbv.belt_style_ind = p_style_ind AND
bbv.material_ind = p_material_ind AND
bbv.color_ind = p_color_ind;
RETURN lr
Ошибка:
PLS-00306: wrong number or types of arguments in call to 'GET_STD_RODS'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored