Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / ORA-01008: not all variables bound / 6 сообщений из 6, страница 1 из 1
09.11.2006, 11:57:02
    #34115220
L0n3R4ng3r
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-01008: not all variables bound
знаю что тема неоднократно поднималась но можно более популярно обьяснить из-за чего выскакует ошибка
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
StringBuffer sql =  new  StringBuffer("{? = call sa.KP_GETCARDINFOADMINBYID(?");
             for  ( int  i =  2 ; i <=  6 ; i++) {
                sql.append(",?");
            }
            sql.append(") }");
            CallableStatement cst = conn.prepareCall(sql.toString());

            cst.registerOutParameter( 2 , Types.VARCHAR);
            cst.registerOutParameter( 3 , Types.VARCHAR);
            cst.registerOutParameter( 4 , Types.VARCHAR);
            cst.registerOutParameter( 5 , Types.TIMESTAMP);
            cst.registerOutParameter( 6 , Types.VARCHAR);
  try {

             for  (Iterator iterator = ids.iterator(); iterator.hasNext();) {

                String id = (String) iterator.next();
                cst.setString( 1 , id);
                cst.execute();
                total++;

                String family = cst.getString( 2 );
                String fname = cst.getString( 3 );
                String sec_name = cst.getString( 4 );
                Date born = cst.getDate( 5 );
                String office = cst.getString( 6 );
   Element row = rows.addElement("row").addAttribute("card_id", id);
                Element jsRow = jsdata.addElement(jrXMLDataSource.QNAME_ROW);

                addElement(row, "family", family);
                addElement(row, "fname", fname);
                addElement(row, "sec_name", sec_name);
                addElement(row, "born", born,  new  		SimpleDateFormat("dd.MM.yyyy"));
                addElement(row, "office", office);

jrXMLDataSource.addField(jsRow, "family", family);
                jrXMLDataSource.addField(jsRow, "fname", fname);
                jrXMLDataSource.addField(jsRow, "sec_name", sec_name);
                jrXMLDataSource.addField(jsRow, "born", String.valueOf(born));
                jrXMLDataSource.addField(jsRow, "office", office);
  }
            cst.close();
}
Описание процедуры в Oracle:
Код: plaintext
1.
2.
3.
4.
5.
6.
CARD_ID_STR_ IN VARCHAR2, 
 FAMILY_ OUT VARCHAR2, 
 FNAME_ OUT VARCHAR2, 
 SEC_NAME_ OUT VARCHAR2, 
 BORN_ OUT DATE, 
 OFFICE_ OUT VARCHAR2

при вызове Оракл ругаеться
ORA-01008: not all variables bound


что не правильно или что ему не хватает???
Заранее спасибо.
...
Рейтинг: 0 / 0
09.11.2006, 12:12:29
    #34115312
MBasil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-01008: not all variables bound
Символов вопроса в строке получается 7, 5 OUT переменных и одна строкаовая IN для входной переменной (первый знак вопроса).
6+1 =6 - То есть я не нашел еще одного знака вопроса с заданным значением.
...
Рейтинг: 0 / 0
09.11.2006, 12:12:56
    #34115316
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-01008: not all variables bound
L0n3R4ng3r...

при вызове Оракл ругаеться
ORA-01008: not all variables bound


что не правильно или что ему не хватает???
Заранее спасибо.
Он четко ответил.
http://saturn.uab.es/java.920/a96654/basic.htm#1002489
...
Рейтинг: 0 / 0
09.11.2006, 12:14:34
    #34115321
dremmmmm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-01008: not all variables bound
Распечатай StringBuffer sql, сразу поймеш
...
Рейтинг: 0 / 0
09.11.2006, 13:31:34
    #34115767
L0n3R4ng3r
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-01008: not all variables bound
при смене синтаксиса с
CallableStatement cs2 = conn.prepareCall
( "{? = call func (?,?)}" ) ;
CallableStatement cs4 = conn.prepareCall
( "begin ? := func(?,?); end;" ) ;
жить проще не стало ошибка таже.

2MBasil:
чесно говоря не понял что ты имеешь ввиду... В ф-ции 1 IN значение и 5 OUT тоесть 6, и готовимся принять 5 и одно отсылаем в итоге 6. Можно поподробней если с примером то вообще....
...
Рейтинг: 0 / 0
09.11.2006, 17:45:49
    #34117154
MBasil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORA-01008: not all variables bound
StringBuffer sql = new StringBuffer("{? = call sa.KP_GETCARDINFOADMINBYID(?");
//------------------------------------1-----------------------------------2---
// определили первые 2

for (int i = 2; i <= 6; i++) {
sql.append(",?"); //добавили еше 6
}
sql.append(") }");
CallableStatement cst = conn.prepareCall(sql.toString());

cst.registerOutParameter(2, Types.VARCHAR);
cst.registerOutParameter(3, Types.VARCHAR);
cst.registerOutParameter(4, Types.VARCHAR);
cst.registerOutParameter(5, Types.TIMESTAMP);
cst.registerOutParameter(6, Types.VARCHAR);
//---------------- определили 5 ------------
. . .
cst.setString(1, id); // сунули первому значение
// А где последний седьмой ?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / ORA-01008: not all variables bound / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]