Maison > base de données > tutoriel mysql > Comment puis-je récupérer efficacement le DBMS_OUTPUT d'Oracle à l'aide de JDBC ?

Comment puis-je récupérer efficacement le DBMS_OUTPUT d'Oracle à l'aide de JDBC ?

Susan Sarandon
Libérer: 2024-12-31 09:25:14
original
613 Les gens l'ont consulté

How Can I Efficiently Fetch Oracle's DBMS_OUTPUT Using JDBC?

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;
Copier après la connexion

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()));
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal