Skip to content

$sql.prepareStatement

Description

Crée un prepared statement et retourne ce dernier en tant qu'objet pojo en vue d'une utilisation future.

Syntaxe

$sql.prepareStatement( query [ , options ] )

Paramètres

query string
Requête servant de base au prepared statement
options map

Map d'options. Les options reconnues sont:

autocommit boolean
Flag true/false permettant d'activer/désactiver l'auto-commit. Par défaut l'auto-commit est actif.
type string
Indication passée au processeur pour renseigner sur le type de requête. Le type de requête influence sur la valeur de retour de la requête: une requête de type SELECT retourne un resultset contenant les données recherchées alors qu'une requête de type INSERT retourne les valeurs de clés auto-générées. Ainsi, on pourra indiquer que la requête est de type "insert" au moyen du terme insert.
connection string
Nom de connexion de laquelle exécuter la requête. Le nom doit faire référence à une connexion définie dans le fichier de configuration

Retour

La méthode retourne l'identifiant généré pour le prepared statement référencé en cache. L'identifiant en question est un UUID.

Exemple

Exemple de base. Notez l'utilisation de try/finally et l'exécution de la méthode $sql.releaseStatement dans la clause finally afin de s'assurer qu'elle soit exécutée dans tous les cas.

1
2
3
4
5
6
7
8
9
var psref = $sql.prepareStatement(`select ?`);
try {
  for (var i = 0; i < 10; ++i) {
    $logger.info($sql.select(psref, [ i ]));
  }
}
finally {
  $sql.releaseStatement(psref);
}

Exemple plus avancé dans lequel on génère plusieurs prepared statements à la fois.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
var pskInfoVendeur = $sql.prepareStatement(`select ResumeText
                                            from Vendeur
                                            where idVendeur=?`::T),
    pskTotArticles = $sql.prepareStatement(`select count(*)
                                            from Article
                                            where idVenteEchange=?
                                              and idVendeur=?`::T),
    pskNumLabels = $sql.prepareStatement(`select count(*)
                                          from Article
                                          where idVenteEchange=?
                                            and idVendeur=?
                                            and (? = 1 or coalesce(Printed, 0) = 0)
                                            and Statut!='refuse'`::T);
try {
    for (var row : listerVendeurs(venteechange, premiervendeur, derniervendeur, !allowreprint, '')) {
      var nombreEtiquettes = $sql.select(pskNumLabels, [ (number) venteechange, row[0], (number) allowreprint ] );

      if (filtreImpression && nombreEtiquettes == 0) continue;

      if (counter++ > 0) $response.addContent(",");
      $response.addContent(`{ "vendeur": ` & $json.stringify($sql.select(pskInfoVendeur, [ row[0] ])) &
                           `, "totarticles": ` & $json.stringify($sql.select(pskTotArticles, [ (number) venteechange, row[0] ] )) &
                           `, "numlabels": ` & $json.stringify(nombreEtiquettes) & `}`);
    }
}
finally {
    $sql.releaseStatement([pskInfoVendeur, pskTotArticles, pskNumLabels]);
}