Documentation PostgreSQL 14.22 » Interfaces client » ECPG -- SQL embarqué en C » Commandes SQL Embarquées » PREPARE

Précédent | Niveau supérieur | Suivant
OPEN | Sommaire | SET AUTOCOMMIT

## PREPARE

PREPARE — prépare un ordre pour son exécution

## Synopsis

    PREPARE nom_préparé FROM chaîne

## Description

`PREPARE` prépare l'exécution d'un ordre spécifié dynamiquement sous forme d'une chaîne. C'est différent des ordres SQL directs PREPARE, qui peuvent aussi être utilisés dans des programmes embarqués. La commande EXECUTE peut être utilisée pour exécuter les deux types de requêtes préparées.

## Paramètres

`nom_prepare`

  Un identifiant pour la requête préparée.

`chaîne`

  Une chaîne littérale ou une variable hôte contenant un ordre SQL préparable, soit SELECT, INSERT, UPDATE ou DELETE. Utilisez des points d'interrogation (`?`) pour les valeurs de paramètres à fournir à l'exécution.

## Notes

Dans une utilisation type, la `chaîne` est une référence de variable à une chaîne contenant l'ordre SQL dynamiquement construit. Le cas d'une chaîne littérale n'est pas très utile ; vous pouvez tout autant écrire un ordre SQL direct `PREPARE`.

Si vous utilisez une chaîne littérale, gardez à l'esprit que tout guillemet que vous souhaitez inclure dans l'ordre SQL doit être écrit avec des caractères d'échappement octal (`\042`) et non pas les idiomes habituels C `\"`. En effet, la chaîne est dans une section `EXEC SQL`, donc l'analyseur grammatical ECPG l'analyse suivant les règles SQL et non pas les règles C. Toute barre oblique inverse (« backslash ») sera plus tard gérée en suivant les règles C ; mais `\"` provoque une erreur de syntaxe immédiate parce qu'il est vu comme une fin de litéral.

## Exemples

    char *stmt = "SELECT * FROM test1 WHERE a = ? AND b = ?";

    EXEC SQL ALLOCATE DESCRIPTOR outdesc;
    EXEC SQL PREPARE foo FROM :stmt;

    EXEC SQL EXECUTE foo USING SQL DESCRIPTOR indesc INTO SQL DESCRIPTOR outdesc;

## Compatibilité

`PREPARE` est spécifié dans le standard SQL.

## Voir aussi

CONNECT, DISCONNECT