Callablestatement для процедуры Oracle

  • Автор темы -
  • Дата начала

Гость
#1
мой statement
Код:
CallableStatement callst = connection
.prepareCall("begin P_AGNLIST_BASE_INSERT("
+ "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, "
+ "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, "
+ "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, "
+ "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, "
+ "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?" + "); end;");
всего 52 параметра
многие из них я устанавливаю, как null, например:
setNull(23, Types.NULL)
дату устанавливаю как
Date dDISCDATE = new Date(111111);
callst.setDate(37, dDISCDATE);
пробовала и через NULL
а последний выходной - callst.registerOutParameter(52, Types.FLOAT);
ошибка практически всегда:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'P_AGNLIST_BASE_INSERT'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
в самом PL\SQL development пробовала с такими же данными добавить, добавляется.

в чем вообще может быть ошибка?
 

Kmet

Well-Known Member
Java Team
25.05.2006
1 036
8
#2
Код:
CallableStatement callst = connection
.prepareCall("begin P_AGNLIST_BASE_INSERT("
+ "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, "
+ "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, "
+ "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, "
+ "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, "
+ "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?" + "); end;");
ты уверен в семантике вызова?
я как то больше с таким сталкивался "{P_AGNLIST_BASE_INSERT(?,?,?.....)}"

и где сигнатура хранимки? а то гадать не хочется

по именам сетать пробовал?
 

Гость
#3
Проблема была с blob. мне нужно было записать в БД null и всего-то. но blob категорически не записывался через setNull. в результате использовала oracle.sql.BLOB = null. и засетила его как Blob.
так что синтаксис правильный.
а как по именам сетить? я видела примеры, где только вопросы.