Extraction de lignes DBMS_OUTPUT à l'aide de JDBC
La procédure dbms_output.get_lines permet de récupérer la sortie des procédures Oracle exécutées dans une application Java à l'aide de JDBC. Pour ce faire sans créer d'objets de base de données, envisagez les étapes suivantes :
Exemple de code :
try (CallableStatement call = c.prepareCall( "declare \n" + " num integer := 1000;\n" // Adjust value as needed + "begin \n" + " dbms_output.enable();\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 = call.getArray(1); System.out.println(Arrays.asList((Object[]) array.getArray())); }
Sortie :
[abc, hello, so cool, null]
N'oubliez pas que l'activation et la désactivation du tampon de sortie affecte l’ensemble de la connexion. Par conséquent, il est possible de capturer le résultat sur plusieurs instructions JDBC.
Remarque : Cette approche récupère un maximum de 1 000 lignes par défaut. Pensez à effectuer une boucle en PL/SQL ou à interroger la base de données pour des lignes supplémentaires.
À l'aide de jOOQ :
les utilisateurs de jOOQ peuvent récupérer automatiquement la sortie du serveur en activant FetchServerOutputListener :
DSLContext ctx = DSL.using(c, new Settings().withFetchServerOutputSize(10));
Cette action enregistrera la sortie dans FetchServerOutputListener et capturera la sortie du serveur dans ExecuteContext::serverOutput.
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!