PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 14.11 » Interfaces client » ECPG -- SQL embarqué en C » Commandes SQL Embarquées » EXECUTE IMMEDIATE

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.