Вставка Oracle JDBC через хранимую процедуру с использованием Java - PullRequest
0 голосов
/ 21 декабря 2011

Я пытаюсь вставить запись в Oracle 11g, используя Java.Я все еще изучаю Java.

Я должен вызвать хранимую процедуру, чтобы вставить запись.Мой основной ключ в таблице пользователей - user_id.У меня также есть последовательность, увеличенная на 2 для user_id

Теперь, при настройке входных параметров в Java, что мне нужно передать в user_id?Кроме того, какой будет тип в случае параметра даты:

Users:user_id number (primary key), email varchar, created_date Date

У меня ниже код Java:

        Class.forName("oracle.jdbc.OracleDriver");          
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@101.12.11.11:1521:demo", "demo_app", "demo");

        CallableStatement cs = conn.prepareCall("{exec demo.my_pkg.insert_users(?,?,?)}");
        cs.registerOutParameter(1, Types.INTEGER);
        cs.setInt(1, ?????);

        cs.execute();

Нужно ли устанавливать здесь user_id?Если да, что я должен установить, так как это последовательность?А как насчет поля даты и поля электронной почты?

Нужен ли здесь registerOutParameter?Если да, то почему?

И, наконец, как я получу подтверждение, что вставка прошла успешно?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 21 декабря 2011

Нужно ли мне регистрировать здесь параметр?Если да, то почему?

да, вам нужно зарегистрироватьOutParameter, если ваша хранимая процедура возвращает какое-либо значение (т. Е. Это функция)

Для установки поля даты используйте класс java.sql.Date в качестве Типа.

0 голосов
/ 21 декабря 2011
  1. Нужно ли указывать здесь user_id?RE: Вы можете получить значение последовательности перед тем, как его установить:

    выберите имя_последовательности.nextval из двойного

  2. Нужен ли здесь registerOutParameter?Если так, то почему?RE: Если вы хотите получить возвращаемое значение, вы можете зарегистрироватьOutParameter, если нет, забыть об этом.

  3. как я получу подтверждение, что вставка прошла успешно?RE: Вы можете получить результат из выходного параметра или возвращаемого значения процедуры

0 голосов
/ 21 декабря 2011

Если у вас нет триггера / вычисления user_id в хранимой процедуре, тогда да, вам нужно передать user_id из кода Java (получить следующее значение последовательности в Java и передать его в сохраненную функцию). Вам нужно зарегистрировать параметр, если ваша функция возвращает значение. Подтверждение зависит от реализации. Например, если возвращаемая вами функция была вставлена ​​пользователем или нет, просто проверьте возвращаемое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...