Skip to content

$sql.addBatch

Description

Ajoute un set de valeurs en vue d'une exécution par batch. L'utilisation de cette méthode ne fait sens que pour les requêtes de mise à jour, de type UPDATE ou DELETE.

Syntaxe

$sql.addBatch( statement , data [ , options ] )

Paramètres

statement pojo
Référence de prepared statement auquel ajouter le batch. La référence peut être obtenue avec la méthode $sql.prepareStatement
data array / map / string / number / date / time / timestamp / file

Données à ajouter en batch. Le paramètre ne doit pas être null. Le paramètre peut prendre différentes formes en fonction de la requête pour sur laquelle il doit s'appliquer:

  • Valeur litérale unique: La requête n'attend qu'un seul paramètre de type simple (string, number, date, time, timestamp ou file)
  • Tableau 1D : Dans ce cas, les valeurs du tableau sont reprises comme valeurs pour le prepared statement.
  • Tableau 2D (tableau de tableau 1D) : Cette syntaxe permet de passer plusieurs jeux de données à la fois. Dans ce cas, la méthode inscrit autant d'entrées au batch qu'il y a de tableaux 1D
  • Map : Ce cas s'applique si la requête référence des paramètres nommés. Le map doit fournir les valeurs pour les différents noms de paramètres attendus par la requête.
  • Tableau de map : Cette syntaxe permet de passer plusieurs jeux de données à la fois, en utilisant la notation avec des paramètres nommés. Dans ce cas, la méthode inscrit autant d'entrées au batch qu'il y a de maps dans le tableau.

Veuillez prendre connaissance de la note traitant de la valeur null dans la documentation de $sql.select.

options map

Map d'options. Les options reconnues sont:

connection string
Nom de connexion de laquelle tirer les paramètres de connexion. Doit référencer une connexion définie dans le fichier de configuration.

Retour

Retourne true si le prepared statement référencé par la clé existe dans le cache, sinon false.

Exemple

Exemple d'insertions au moyen d'un batch. L'idée c'est de créer un prepared statement et ensuite de passer des sets de valeurs au statement et de les référencer en tant que batch. En fait, on ne fait que de pusher des données sur le statement, puis on lance le batch à la fin. On indique au passage d'exécuter le batch sans auto-commit (il n'y aura qu'un seul commit à la fin).

Notez au passage l'usage de try/finally. La libération du statement est faite dans la clause finally pour s'assurer qu'elle soit bien effectuée, même en cas d'exception.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
var ps = $sql.prepareStatement(`insert into ArticleListeArticle(idListeArticle, Numero, Soldable)
                                values(?,?,0)`, { autocommit: false });
try {
    for (var cnt = 1; cnt <= numArticles; ++cnt) {
      $sql.addBatch(ps, [ ctxtListeArticle.docId, cnt ]);
    }

    $sql.executeBatch(ps);
}
finally {
    $sql.releaseStatement(ps);
}

Exemple équivalent en utilisant des paramètres nommés:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
var ps = $sql.prepareStatement(`insert into ArticleListeArticle(idListeArticle, Numero, Soldable)
                                values(:docId,:cnt,0)`, { autocommit: false });
try {
    for (var cnt = 1; cnt <= numArticles; ++cnt) {
      $sql.addBatch(ps, { docId: ctxtListeArticle.docId, cnd: cnt });
    }

    $sql.executeBatch(ps);
}
finally {
    $sql.releaseStatement(ps);
}