Maison >base de données >tutoriel mysql >Comment récupérer DBMS_OUTPUT.GET_LINES d'Oracle dans JDBC sans créer d'objets de base de données ?

Comment récupérer DBMS_OUTPUT.GET_LINES d'Oracle dans JDBC sans créer d'objets de base de données ?

DDD
DDDoriginal
2024-12-31 18:38:10702parcourir

How to Fetch Oracle's DBMS_OUTPUT.GET_LINES in JDBC Without Creating Database Objects?

Récupération de DBMS_OUTPUT.GET_LINES dans JDBC sans créer d'objets de base de données

Dans Oracle, DBMS_OUTPUT.GET_LINES fournit un mécanisme pour récupérer la sortie des procédures stockées ou d'autres opérations de base de données. Bien qu'il soit possible de créer des objets supplémentaires dans la base de données pour faciliter ce processus, il peut être souhaitable d'éviter cette surcharge. Cet article explique comment obtenir la sortie DBMS_OUTPUT.GET_LINES en Java à l'aide de JDBC sans recourir à des entités de base de données externes.

Activation de la mise en mémoire tampon de sortie

La première étape consiste à activer la mise en mémoire tampon de sortie. en utilisant DBMS_OUTPUT.ENABLE(). Cela permet de capturer la sortie du serveur pendant l'exécution des opérations de base de données.

Capture de la sortie

Pour capturer la sortie, DBMS_OUTPUT.GET_LINES() est utilisé. Cette procédure récupère un nombre spécifié de lignes de sortie dans un curseur SQL. Il est crucial d'enregistrer le paramètre de sortie sous forme de tableau de type "DBMSOUTPUT_LINESARRAY" pour recevoir les résultats.

Récupération de la sortie

Le DBMSOUTPUT_LINESARRAY contient un tableau d'objets représentant la sortie lignes. Pour obtenir la sortie réelle, le tableau est récupéré à l'aide de la méthode getArray() de JDBC.

Exemple de code

try (CallableStatement call = c.prepareCall(
    //这段代码用于设置enable output buffering,在DBMS_OUTPUT.PUT_LINE()与DBMS_OUTPUT.GET_LINES()之间执行
    "declare num integer := 1000; begin dbms_output.enable(); ..."
)) {
    // ... remaining code to capture and print output
}

Intégration jOOQ

jOOQ, une bibliothèque Java pour travailler avec SQL, fournit un moyen pratique de récupérer automatiquement le résultat des exécutions du serveur. En définissant withFetchServerOutputSize() dans l'objet Paramètres, jOOQ récupérera la sortie du serveur lors de l'exécution de la requête.

Recommandation : DBMS_OUTPUT.GET_LINES sur DBMS_OUTPUT.GET_LINE

Pendant que DBMS_OUTPUT.GET_LINE renvoie une seule ligne à la fois, il est fortement recommandé d'utiliser DBMS_OUTPUT.GET_LINES à la place. Des benchmarks ont montré que DBMS_OUTPUT.GET_LINES est nettement plus rapide lorsqu'il est appelé depuis 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!

Déclaration:
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