Exécution de la procédure stockée via java et sqlpls
David__3403
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
Reivax962 Messages postés 3672 Date d'inscription Statut Membre Dernière intervention -
Reivax962 Messages postés 3672 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
L’exécution de ma procédure via java met 2 secondes pour insérer environ 5000 lignes en base :
try
{
string procedure = "begin myprocedure (?,?,?); end ;";
conn = DBManager.getConnection();
statement =conn.prepareCall(procedure);
for (int i=0 , i< flowList.length; i++ {
statement.setString (1, SEID);
statement.setString (2, flowList[i]);
statement.setString (3, SIID);
…...
}
Par contre l’exécution via sql plus prend 10 minutes, est-ce qu’il y a moyen d’optimiser ma procédure via sql plus ?
#/bin/ksh
while read flowList; do
$ORACLE_HOME/bin/sqlplus -s $conexion<<FOF
set serveroutput on
whenever sqlerror exit.SQL.SQLCODE
exec myprocedure ($SEID,$flowList,$SIID);
FOF
done <"${fic}"
Merci pour votre aide.
L’exécution de ma procédure via java met 2 secondes pour insérer environ 5000 lignes en base :
try
{
string procedure = "begin myprocedure (?,?,?); end ;";
conn = DBManager.getConnection();
statement =conn.prepareCall(procedure);
for (int i=0 , i< flowList.length; i++ {
statement.setString (1, SEID);
statement.setString (2, flowList[i]);
statement.setString (3, SIID);
…...
}
Par contre l’exécution via sql plus prend 10 minutes, est-ce qu’il y a moyen d’optimiser ma procédure via sql plus ?
#/bin/ksh
while read flowList; do
$ORACLE_HOME/bin/sqlplus -s $conexion<<FOF
set serveroutput on
whenever sqlerror exit.SQL.SQLCODE
exec myprocedure ($SEID,$flowList,$SIID);
FOF
done <"${fic}"
Merci pour votre aide.
A voir également:
- Exécution de la procédure stockée via java et sqlpls
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
1 réponse
Bonjour,
Je ne connais pas trop les outils que tu utilises, mais, à première vue, il me semble que dans ton script sh, tu ré-établis la connexion à chaque itération de ta boucle.
Est-ce que tu ne peux pas placer le while...done juste autour du exec ?
Comme ça :
Xavier
Je ne connais pas trop les outils que tu utilises, mais, à première vue, il me semble que dans ton script sh, tu ré-établis la connexion à chaque itération de ta boucle.
Est-ce que tu ne peux pas placer le while...done juste autour du exec ?
Comme ça :
#/bin/ksh $ORACLE_HOME/bin/sqlplus -s $conexion<<FOF set serveroutput on whenever sqlerror exit.SQL.SQLCODE while read flowList; do exec myprocedure ($SEID,$flowList,$SIID); done <"${fic}" FOF
Xavier
Mais le problème est pourtant bien là, je pense : le fait de réétablir 5000 fois la connexion.
Il faudrait trouver une instruction Oracle pour parcourir les lignes d'un fichier, ça existe sûrement.
https://stackoverflow.com/questions/14823382/read-text-file-to-insert-data-into-oracle-sql-table