Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / oracle.jdbc вызов процедуры / 17 сообщений из 17, страница 1 из 1
22.05.2007, 06:05:12
    #34541099
crashc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
oracle.jdbc вызов процедуры
Господа...
В PL/SQL Developere вызываю процедуру из некого пакета..
Код: plaintext
1.
2.
3.
4.
5.
6.
declare
    name3 VARCHAR2( 100 ):='103450';
    ret VARCHAR2( 100 ); --Выходное значение
begin
  package.get_this(name3,:ret);
end;
И в вариаблах получаю ret... Т.е. все как надо...

А на яве как ?
Пытаюсь
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
CallableStatement cs;
         try  {
            cs = cnOra.prepareCall("declare name3 VARCHAR2(100); ret VARCHAR2(100); begin " +
"package.get_this('103450',:?); end;");
                       
    //cs.setString(1, "103458");
    cs.registerOutParameter( 1 ,Types. CHAR );
    

    cs.executeUpdate();
    String result = cs.getString( 1 );
        }  catch  (SQLException ex) {
            ex.printStackTrace(); out.println("MAIN SQLException: " + ex.getMessage());
        }
ДА и по всякому, но не как не выходит...
Помогите... Как ее вызвать то ???
...
Рейтинг: 0 / 0
22.05.2007, 06:13:17
    #34541104
vas0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
oracle.jdbc вызов процедуры
примерно как-то вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
            String sql = "{ ? = call SOME_PACKAGE.SOME_FUNCTION(?)}";

            statement = conn.prepareCall(sql);
            statement.registerOutParameter( 1 , OracleTypes.CURSOR);
            statement.setString( 2 , param);

            statement.execute();
            ResultSet rs = (ResultSet) statement.getObject( 1 );
...
Рейтинг: 0 / 0
22.05.2007, 06:17:41
    #34541105
crashc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
oracle.jdbc вызов процедуры
Ну где то так... да...
Но что то не выходит... Ошибка за ошибкой сыпятца...
...
Рейтинг: 0 / 0
22.05.2007, 06:26:50
    #34541112
vas0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
oracle.jdbc вызов процедуры
crashc
Код: plaintext
1.
2.
CallableStatement cs;
            cs = cnOra.prepareCall("declare name3 VARCHAR2(100); ret VARCHAR2(100); begin " +
"package.get_this('103450',:?); end;");

это не попытка вызвать хранимую процедуру/функцию, а попытка ее создать. Создавать их через jdbc по моему нельзя.

а что в логах пишет?
...
Рейтинг: 0 / 0
22.05.2007, 06:29:39
    #34541114
crashc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
oracle.jdbc вызов процедуры
Как ни крути... MAIN SQLException: Недопустимый индекс столбца...
Либо о параметрах что то там не интересное...
...
Рейтинг: 0 / 0
22.05.2007, 06:35:00
    #34541118
vas0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
oracle.jdbc вызов процедуры
Еще есть подозрение на вызов cs.executeUpdate(); , попробуй cs.execute();
...
Рейтинг: 0 / 0
22.05.2007, 06:39:43
    #34541120
crashc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
oracle.jdbc вызов процедуры
А тут как быть ?
Код: plaintext
String sql = "{(call ?:= md_portal.get_scraps(?, ?); }";
Что потом...
Ведь в функции параметра то всего 2! Первый - вход, а второй выход...
Т.е. два "?" а еще тот что перед call...
Что то я запутался совсем...
cs.execute(); - тож не то...
...
Рейтинг: 0 / 0
22.05.2007, 06:49:01
    #34541130
crashc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
oracle.jdbc вызов процедуры
Код: plaintext
1.
2.
3.
4.
5.
6.
     String sql = "{(call package.get_this(?,?); }";
            cs = cnOra.prepareCall(sql);
            cs.registerOutParameter( 2 , Types. CHAR );
            cs.setString( 1 , "103450");
            cs.execute();
    cs.execute();
    String result = cs.getString( 1 );
Тут твобще description The server encountered an internal error () that prevented it from fulfilling this request.
...
Рейтинг: 0 / 0
22.05.2007, 06:58:57
    #34541139
vas0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
oracle.jdbc вызов процедуры
crashcА тут как быть ?
Код: plaintext
String sql = "{(call ?:= md_portal.get_scraps(?, ?); }";
Что потом...
Ведь в функции параметра то всего 2! Первый - вход, а второй выход...
Т.е. два "?" а еще тот что перед call...
Что то я запутался совсем...
cs.execute(); - тож не то...
Я приводил пример, когда у тебя функция. Функция обязательно что-то возвращает и пишут
Код: plaintext
{ ? = call SOME_PACKAGE.SOME_FUNCTION(?, ?)}
если эта процедура то пишут
Код: plaintext
{ call SOME_PACKAGE.SOME_PROCEDURE(?)}

ну и далее как у тебя, устанавливаешь входные параметры, и регистрируешь выходные
Код: plaintext
1.
2.
cs.registerOutParameter( 1 ,Types. CHAR );
cs.execute();
String result = cs.getString( 1 );

как-то так должно быть
...
Рейтинг: 0 / 0
22.05.2007, 07:03:34
    #34541142
vas0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
oracle.jdbc вызов процедуры
crashc
Код: plaintext
1.
2.
3.
4.
5.
6.
     String sql = "{(call package.get_this(?,?); }";
            cs = cnOra.prepareCall(sql);
            cs.registerOutParameter( 2 , Types. CHAR );
            cs.setString( 1 , "103450");
            cs.execute();
    cs.execute();
    String result = cs.getString( 1 );
Тут твобще description The server encountered an internal error () that prevented it from fulfilling this request.
здесь у тебя два cs.execute(). ну и получать результат нужно cs.getString(2);
...
Рейтинг: 0 / 0
22.05.2007, 07:08:06
    #34541144
vas0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
oracle.jdbc вызов процедуры
crashc[src java] String sql = "{(call package.get_this(?,?); }";
src]

здесь тоже лишняя круглая скобка и знак ";"
...
Рейтинг: 0 / 0
22.05.2007, 07:08:44
    #34541145
crashc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
oracle.jdbc вызов процедуры
В индексе отсутствует параметр IN или OUT:: 2
...
Рейтинг: 0 / 0
22.05.2007, 07:24:13
    #34541155
vas0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
oracle.jdbc вызов процедуры
слушай я тебе наверно сам сейчас, загоняю. Сам уже запутался.

Вот тут у себя покопался и нашел вызов процедур с регистрацией параметров вот в таком виде.

stmt = con.prepareCall(
"begin package.proc(?,?);end;"
);
stmt.registerOutParameter(1, Types.INTEGER);
stmt.registerOutParameter(2, Types.INTEGER);
stmt.execute();

first = stmt.getInt(1);
second = stmt.getInt(2);
...
Рейтинг: 0 / 0
22.05.2007, 07:24:47
    #34541157
crashc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
oracle.jdbc вызов процедуры
Не ну, знаки препинания и прочее, это я тут спеша написал...
А вот результсета, я вобще 3 обнаружил ;) и еще сама сылка на сервлет не туда вела, а на старый проект...
2vas0 - СПАСИБО огромное!
Чет я не проснулся ;)
Еще раз спасибо !!!
...
Рейтинг: 0 / 0
22.05.2007, 07:32:29
    #34541164
crashc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
oracle.jdbc вызов процедуры
Позволь немного оффтоп...
Есть процедура... Несколько параметров... Один выходной, но тип этого параметра на самаом деле RECORD, т.е. как ыб таблица...
Не в курсе возможно ли как то это хотяб в девелопере протестить ? Сыылка может есть...
...
Рейтинг: 0 / 0
22.05.2007, 07:44:09
    #34541170
vas0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
oracle.jdbc вызов процедуры
crashcПозволь немного оффтоп...
Есть процедура... Несколько параметров... Один выходной, но тип этого параметра на самаом деле RECORD, т.е. как ыб таблица...
Не в курсе возможно ли как то это хотяб в девелопере протестить ? Сыылка может есть...
На название процедуры, вызываешь контекстное меню, а там есть "Test", вводишь все свои входные параметры. Нажимаешь F8, и можно будет результат посмотреть. Если я привильно понял вопрос. :)
...
Рейтинг: 0 / 0
22.05.2007, 09:00:34
    #34541260
crashc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
oracle.jdbc вызов процедуры
))))
Ну вобще верно ;)
Но когда выходной тип объект, то не пахает ;)
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / oracle.jdbc вызов процедуры / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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