Il y a le EXECUTE déclaration de plpgsql , qui ferait ce que vous essayez de faire - exécuter une chaîne de requête SQL. Vous avez marqué dynamique, c'est peut-être ce que vous recherchez.
Fonctionne uniquement dans les fonctions plpgsql ou DO instructions (blocs de code anonymes). La distinction entre EXECUTE et SQL-EXECUTE précisé dans le beau manuel :
Remarque : Le PL/pgSQL
EXECUTEl'instruction n'est pas liée àEXECUTEInstruction SQL prise en charge par le serveur PostgreSQL. LeEXECUTEdu serveur L'instruction ne peut pas être utilisée directement dans les fonctions PL/pgSQL (et n'est pas nécessaire).
Si vous souhaitez renvoyer des valeurs à partir d'un SELECT dynamique query comme l'indique votre exemple, vous devez créer une fonction. DO les instructions renvoient toujours void . Plus d'informations sur le retour des valeurs d'une fonction dans le très bon manuel.