Maison >base de données >tutoriel mysql >Comment récupérer DBMS_OUTPUT d'Oracle à l'aide de JDBC ?
Récupération de la sortie de la procédure DBMS_OUTPUT.GET_LINES d'Oracle à l'aide de JDBC
JDBC fournit un moyen d'accéder à la sortie générée par la procédure dbms_output.get_lines d'Oracle sans créer objets supplémentaires dans la base de données. Voici comment y parvenir :
Activer la mise en mémoire tampon de sortie du serveur : Avant d'accéder à la sortie, activez la mise en mémoire tampon sur la connexion actuelle pour capturer toute sortie du serveur :
dbms_output.enable();
Stocker la sortie dans la table PL/SQL : Pour capturer le serveur sortie, créez une table en PL/SQL pour stocker la sortie :
create type DBMSOUTPUT_LINESARRAY as table of varchar2(255);
Appelez DBMS_OUTPUT.GET_LINES : Utilisez un CallableStatement pour appeler dbms_output.get_lines et transmettez dans la table PL/SQL en sortie paramètre :
CallableStatement call = c.prepareCall( "declare \n" + " num integer := 1000;\n" // Adjust this value as needed + "begin \n" + " dbms_output.get_lines(?, num);\n" + " dbms_output.disable();\n" + "end;\n" ); call.registerOutParameter(1, Types.ARRAY, "DBMSOUTPUT_LINESARRAY");
Désactiver la mise en mémoire tampon de sortie du serveur : Après avoir récupéré la sortie, désactivez la mise en mémoire tampon pour éviter d'éventuels dépassements de tampon :
dbms_output.disable();
Exemple de code : Voici un extrait de code pour démontrer le processus :
try (CallableStatement call = c.prepareCall( "declare \n" + " num integer := 1000;\n" + "begin \n" + " dbms_output.put_line('abc');\n" + " dbms_output.put_line('hello');\n" + " dbms_output.put_line('so cool');\n" + " dbms_output.get_lines(?, num);\n" + " dbms_output.disable();\n" + "end;\n" )) { call.registerOutParameter(1, Types.ARRAY, "DBMSOUTPUT_LINESARRAY"); call.execute(); Array array = null; try { array = call.getArray(1); System.out.println(Arrays.asList((Object[]) array.getArray())); } finally { if (array != null) array.free(); } }
Notez que cette approche fonctionne avec Oracle 12c ou version ultérieure. Dans Oracle 11g, vous devrez peut-être utiliser un type SQL TABLE auxiliaire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!