Spring Jdbc: расширенный класс StoredProcedure – как вызвать процедуру с необязательным входным параметром?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Spring Jdbc: расширенный класс StoredProcedure – как вызвать процедуру с необязательным входным параметром?

Сообщение Anonymous »

У нас есть старое приложение, и оно имеет общий класс BaseStoredProcedure, который расширяет StoredProcedure.
BaseStoredProcedure используется более чем 200 классами вызова процедур. В класс BaseStoredProcedure сложно вносить изменения.
Теперь у нас есть входной параметр, имеющий значение по умолчанию в конце базы данных. Мы должны иметь возможность совершать вызов с обязательным параметром и позволять параметрам по умолчанию работать со значением по умолчанию. Но мы не можем этого сделать. Получение ошибки, как показано ниже

Код: Выделить всё

ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call
Это потому, что он еще не поддерживается? Это открытая проблема.
Примечание: мы не можем заменить эту реализацию на SimpleJdbcCall, поскольку это увеличит регрессионное тестирование.
Ниже приведен лишь пример, а не наш общий класс BaseStoredProcedure. Итак, если у меня есть еще один входной параметр, для которого в БД установлено значение по умолчанию, как вызвать его из Java, не объявляя и не устанавливая здесь. Извините, я не могу опубликовать реальный код.

Код: Выделить всё

class BaseStoredProcedure extends StoredProcedure{
public BaseStoredProcedure(DataSource dataSource, String procedureName){
super(dataSource,procedureName);
declareParameter(new SqlParameter("in_id", Types.INTEGER));

//declareParameter(new SqlParameter("in_total_subject", Types.INTEGER)); // parameter with some default value in Database, which I need to avoid  declaring here
declareParameter(new SqlOutParameter("out_name", Types.VARCHAR));
declareParameter(new SqlOutParameter("out_age", Types.INTEGER));
compile();
}
public Student execute(Integer id){
Map out = super.execute(id /* ,7 */);// additionally, another parameter, which have default value in Database. Which I need to avoid setting
Student student = new Student();
student.setId(id);
student.setName((String) out.get("out_name"));
student.setAge((Integer) out.get("out_age"));
return student;
}
}
Пример процедуры

Код: Выделить всё

PROCEDURE studentdetail
(
@in_id int
,@in_total_subject int = 7,
// Output parameters here
)
Пожалуйста, предложите, как вызвать процедуру с необязательным параметром, используя только StoredProcedure? Как мы можем сделать, используя метод SimpleJdbcCall без ProcedureColumnMetaDataAccess(). Как указано здесь

Подробнее здесь: https://stackoverflow.com/questions/784 ... ith-option
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»