PostgreSQL erreur de syntaxe lors de l'utilisation de l'EXÉCUTER en Fonction de

Je suis en train de créer une fonction qui fait référence à une table temporaire dans PostgreSQL 8.4. D'après mes recherches, il semble que le meilleur moyen pour ce faire est d'utiliser le EXECUTE commande à exécuter ma requête à partir d'une chaîne définie.

Malheureusement, je reçois une étrange erreur de syntaxe lors de la tentative de créer la fonction.

Ma définition de la fonction est la suivante:

CREATE OR REPLACE FUNCTION example() RETURNS void AS $$
  EXECUTE 'INSERT INTO table1 (col1, col2, col3) SELECT col1, col2, col3 from temp_table';
$$ LANGUAGE SQL;

L'erreur que je reçois est:

ERROR:  syntax error at or near "'INSERT INTO table1 (col1, col2, col3) SELECT col1, col2, col3 from temp_table'"
LINE 2:   execute 'INSERT INTO table1 (col1, col2, col3) SELECT col1...

Il semble que je reçois la même erreur indépendamment de ce qui est réellement dans la chaîne littérale.

Mes questions sont les suivantes, 1) quelle est la syntaxe correcte pour l'utilisation de l'EXÉCUTION de la fonctionnalité, et 2) est-il une meilleure façon d'écrire une fonction comme celle-ci qui fait référence à une table temporaire?

OriginalL'auteur Mike Deck | 2011-07-28