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

Précédent | Niveau supérieur | Suivant
DISCONNECT | Sommaire | GET DESCRIPTOR

## EXECUTE IMMEDIATE

EXECUTE IMMEDIATE — prépare et exécute un ordre dynamique

## Synopsis

    EXECUTE IMMEDIATE chaine

## Description

`EXECUTE IMMEDIATE` prépare et exécute immédiatement un ordre SQL spécifié dynamiquement, sans récupérer les enregistrements du résultat.

## Paramètres

`chaine`

  Une chaîne littérale ou une variable hôte contenant l'ordre SQL à exécuter.

## Notes

Dans une utilisation typique, la `chaîne` est une variable hôte référençant une chaîne contenant un ordre SQL dynamiquement construit. Le cas d'une chaîne littérale n'est pas très utile ; vous pouvez aussi bien écrire l'ordre SQL directement, sans saisir en plus `EXECUTE IMMEDIATE`.

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

Voici un exemple qui exécute un ordre `INSERT` en utilisant `EXECUTE IMMEDIATE` et une variable hôte appelée `commande`:

    sprintf(commande, "INSERT INTO test (name, amount, letter) VALUES ('db: ''r1''', 1, 'f')");
    EXEC SQL EXECUTE IMMEDIATE :commande;

## Compatibilité

`EXECUTE IMMEDIATE` est spécifié dans le standard SQL.