это не выполняет хранимую процедуру в Java - PullRequest
0 голосов
/ 20 июня 2019

Я хочу вызвать хранимую процедуру Oracle из Java, но execute () и executeUpdate () всегда возвращают false.Эта хранимая процедура имеет параметр IN (rut) для помещения изображения (из созданного каталога в Oracle) во временную таблицу.В основном из Java я должен вызвать хранимую процедуру и передать ей параметр.

============== Oracle ==============

create or replace PROCEDURE PS_OBT_POSTULANTE (P_RUT_POSTULANTE IN 
 VARCHAR2)
IS
    V_TEMP_BLOB BLOB;
    V_TEMP_BFILE BFILE;
    V_EXISTE NUMBER(2);
    V_FOTO VARCHAR(30);

BEGIN

    --- INSERTAR FOTO EN EL REGISTRO
    DBMS_LOB.CREATETEMPORARY(V_TEMP_BLOB,TRUE);
    V_FOTO := P_RUT_POSTULANTE || '.PNG';

    V_TEMP_BFILE := BFILENAME('DIR_LOB',V_FOTO);
    V_EXISTE := dbms_lob.fileexists(V_TEMP_BFILE);

    IF V_EXISTE = 1 THEN

        DBMS_LOB.FILEOPEN(V_TEMP_BFILE, DBMS_LOB.FILE_READONLY);
        DBMS_LOB.LOADFROMFILE(V_TEMP_BLOB,V_TEMP_BFILE,         
        SYS.DBMS_LOB.GETLENGTH(V_TEMP_BFILE));

        INSERT INTO TEMP_PST (FOTO_PST) 
        VALUES(
            V_TEMP_BLOB
        );

        DBMS_LOB.FILECLOSE(V_TEMP_BFILE);
    END IF;
   dbms_lob.freetemporary(V_TEMP_BLOB);

END PS_OBT_POSTULANTE;

============== JAVA ==============

public static boolean fillInfoPostBD(String rut) {

    String query = "call PS_OBT_POSTULANTE("+rut+")";
    try (Connection con = BD.Conexxxion.conectar()) {
        try (CallableStatement cs = con.prepareCall(query)) {
            if (cs.executeUpdate()>0) {
            cs.close();
            con.close();
            return true;
            }
        }
    } catch (SQLException e) {
        Modelo.Control.error(null, "Error al consultar los datos del 
         postulante " + e);
        return false;
    }
}
  • Когда явыполнить из Oracle, ошибка не вызывается, и она вставляется правильно.
  • Когда я выполняю из Java, ошибка не вызывается и не вставляется.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...