J'ai écrit la sous-classe suivante API JDBC Spring StoredProcedure:Comment écrire des sous-classes StoredProcedure pour appeler des fonctions Oracle?
class GetLdapPropertiesStoredProcedure extends StoredProcedure {
protected GetLdapPropertiesStoredProcedure(JdbcTemplate jdbcTemplate) {
super(jdbcTemplate, "get_ldap_properties");
setFunction(true);
declareParameter(new SqlReturnResultSet("rs", new ProductPropertiesMapper()));
declareParameter(new SqlParameter("in_ldap_code", Types.VARCHAR));
compile();
}
public Properties execute(String productCode) {
HashMap input = new HashMap();
input.put("in_ldap_code", productCode);
Map results = execute(input);
Collection<Map.Entry<Object,Object>> entries = (Collection<Map.Entry<Object,Object>>) results.get("rs");
Properties properties = new Properties();
properties.entrySet().addAll(entries);
return properties;
}
}
Ce qui appelle la fonction Oracle suivante:
FUNCTION get_ldap_properties (
in_ldap_code IN VARCHAR2
)
RETURN rowset;
Cependant, quand je l'appelle qui précède, je reçois l'exception suivante Oracle :
java.sql.SQLException: ORA-06550: line 1, column 13:
PLS-00306: wrong number or types of arguments in call to 'GET_LDAP_PROPERTIES'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
Quelqu'un peut-il s'il vous plaît voir ce que je fais mal?
Merci pour la réponse, mais cela ne me dit pas comment réparer les trucs de l'ensemble de lignes. Cela répond à la question: http://forum.springframework.org/showthread.php?p=231407 –
Il y avait 2 choses ici: ajouter un SqlOutParamater comme paramètre ** first ** et utiliser le bon type. Je ne sais pas pourquoi j'ai écrit Types.VARCHAR ... Je vais corriger la réponse. –
Merci pour cette réponse. –