pg_execute

Nom

pg_execute -- execute une requête et boucle de façon optionnelle sur les résultats

Synopsis

pg_execute ?-array
tableauVar? ?-oid
oidVar? conn
chaineCommande ?procedure?

Description

pg_execute soumet une commande au serveur PostgreSQL.

Si la commande n'est pas une instruction SELECT, le nombre de lignes affectées par la commande est renvoyé. Si la commande est une instruction INSERT et qu'une seule ligne est insérée, l'OID de la ligne insérée est stocké dans la variable oidVar si l'argument optionnel -oid est fourni.

Si la commande est une instruction SELECT, alors, pour chaque ligne du résultat, les valeurs de la ligne sont stockées dans la variable tableauVar, si celle-ci est fournie, en utilisant les noms de colonnes comme indices de tableau, sinon elles sont stockées dans les variables nommées suivant les noms de colonne. Enfin, la procedure optionnelle est exécutée si fournie. (Oublier procedure n'a probablement de sens que si la requête ne renvoie qu'une ligne.) Le nombre de lignes sélectionnées est renvoyé.

La procedure peut utiliser les commandes Tcl break, continue et return avec le comportement attendu. Notez que si la procedure exécute return, alors pg_execute ne renvoie pas le nombre de lignes affectées.

pg_execute est une fonction plus récente qui fournit un sur-ensemble des fonctionnalités de pg_select et peut remplacer pg_exec dans de nombreux cas où l'accès à la poignée résultat n'est pas nécessaire.

Pour les erreurs générées par le serveur, pg_execute lancera une erreur Tcl et renverra une liste à deux éléments. Le premier élément est un code d'erreur tel que PGRES_FATAL_ERROR et le second élément est le texte d'erreur du serveur. Pour des erreurs plus sérieuses, tel qu'un échec dans la communication avec le serveur, pg_execute lancera une erreur Tcl et renverra juste le texte du message d'erreur.

Arguments

-array tableauVar

Indique le nom de la variable tableau où les lignes de résultat sont stockées, indexées par les noms de colonnes. Ceci est ignoré si chaineCommande n'est pas une instruction SELECT.

-oid oidVar

Indique le nom d'une variable dans lequel l'OID résultant d'une instruction INSERT est stocké.

conn

La poignée de la connexion où exécuter la commande.

commandString

La commande SQL à exécuter.

procedure

Le procédure optionnelle à exécuter pour chaque ligne de resultat d'une instruction SELECT.

Code de retour

Le nombre de lignes affectées ou renvoyées par la commande.

Exemples

Dans les exemples suivants, la vérification d'erreur avec catch a été omise pour des raisons de clarté.

Insère une ligne et conserve l'OID dans result_oid :

pg_execute -oid result_oid $pgconn "INSERT INTO matable VALUES (1);"

Affiche les colonnes element et valeur pour chaque ligne :

pg_execute -array d $pgconn "SELECT element, valeur FROM matable;" {
    puts "Item=$d(element) Value=$d(valeur)"
}

Trouve les valeurs maximum et minimum et les stocke dans $s(max) et $s(min):

pg_execute -array s $pgconn "SELECT max(valeur) AS max, min(valeur) AS min FROM
matable;"

Trouve les valeurs maximum et minimum et les stocke dans $max et $min:

pg_execute $pgconn "SELECT max(valeur) AS max, min(valeur) AS min FROM mytable;"