Récupération de DBMS_OUTPUT à l'aide de JDBC
Lors de la gestion de procédures ou de fonctions de base de données à l'aide de Java et JDBC, il peut être nécessaire de capturer la sortie sans créer de données supplémentaires objets ou en modifiant le schéma de la base de données. Une approche consiste à utiliser le package DBMS_OUTPUT d'Oracle.
Pour récupérer la sortie de DBMS_OUTPUT.get_lines, un appel JDBC peut être effectué vers une procédure stockée comme celle ci-dessous, qui comprend les étapes nécessaires pour activer la mise en mémoire tampon, la sortie des lignes, la récupération les lignes, et désactivation de la mise en mémoire tampon :
declare num integer := 1000; begin dbms_output.enable(); dbms_output.put_line('abc'); dbms_output.put_line('hello'); dbms_output.put_line('so cool'); dbms_output.get_lines(?, num); dbms_output.disable(); end;
Dans le code JDBC, cette procédure peut être appelée à l'aide d'un CallableStatement et la méthode getArray pour récupérer la sortie sous forme de tableau :
CallableStatement call = c.prepareCall(procedureQuery); call.registerOutParameter(1, Types.ARRAY, "DBMSOUTPUT_LINESARRAY"); call.execute(); Array array = call.getArray(1); System.out.println(Arrays.asList((Object[]) array.getArray()));
Un autre avantage de l'utilisation de DBMS_OUTPUT.get_lines est sa capacité de transfert en masse, réduisant considérablement la surcharge des appels individuels DBMS_OUTPUT.get_line. L'analyse comparative a montré que l'approche groupée peut être jusqu'à 30 fois plus rapide que l'approche par ligne individuelle lorsqu'elle est exécutée à partir de JDBC.
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!