SQL dynamique (à l'EXÉCUTION) comme condition pour l'instruction if
Je veux exécuter une instruction SQL dynamique, avec sa valeur retournée étant la condition pour une IF
déclaration:
IF EXECUTE 'EXISTS (SELECT 1 FROM mytable)' THEN
Cela génère l'erreur ERROR: type "execute" does not exist
.
Est-il possible de le faire, ou est-il nécessaire pour exécuter le SQL avant l'instruction if dans une variable, et de vérifier ensuite la variable comme le conditionnel?
OriginalL'auteur Matt | 2011-12-09
Vous devez vous connecter pour publier un commentaire.
Cette construction n'est pas possible:
IF EXECUTE 'EXISTS (SELECT 1 FROM mytable)' THEN ...
Vous pouvez simplifier:
Mais votre exemple est probablement juste simplifié. Pour SQL dynamique exécuté avec
EXECUTE
, lire le manuel d'utilisation ici. Vous pouvez le vérifierFOUND
aprèsRETURN QUERY EXECUTE
:Cependant:
Gras c'est moi qui souligne. Un simple
EXECUTE
faire ceci à la place:Ou si opportune - en particulier avec seulement une seule rangée de résultats - utilisation de la
EN
l'article avecEXECUTE
d'obtenir un résultat de la requête dynamique directement. Je cite le manuel ici:OriginalL'auteur Erwin Brandstetter
Matt,
De la syntaxe ci-dessus, vous avez écrit en PL/pgSQL, pas SQL. Sur la tht hypothèse, il y a deux façons de faire ce que vous voulez, mais à la fois, deux lignes de code:
Ou:
"TROUVÉ" est une variable spéciale qui vérifie si la dernière exécution de la requête a retourné toutes les lignes.
FOUND
. Elle n'est pas définie par une plaine EXÉCUTER. Voir ma réponse pour plus de détails.Ah, c'est ce que je reçois pour répondre rapidement.
OriginalL'auteur Josh Berkus
OriginalL'auteur Vijay Mungara