Documentation PostgreSQL 8.1.23 > Langage SQL > Types de données > Pseudo-Types | |
Types identifiants d'objets | Fonctions et opérateurs |
Le système de types de PostgreSQL™ contient un certain nombre de types à usage spécial qui sont collectivement appelés des pseudo-types. Un pseudo-type ne peut être utilisé pour une colonne de table, mais il peut être utilisé pour déclarer un argument de fonction ou un type de résultat. Chacun des pseudo-types disponibles est utile dans des situations où le comportement d'une fonction ne correspond pas simplement à accepter ou retourner des valeurs d'un type de données SQL spécifique. Le Tableau 8.20, « Pseudo-Types » liste les pseudo-types existants.
Tableau 8.20. Pseudo-Types
Nom | Description |
---|---|
any | Indique qu'une fonction accepte n'importe quel type de données, quel qu'il soit. |
anyarray | Indique qu'une fonction accepte tout type tableau (voir la Section 32.2.5, « Types polymorphiques »). |
anyelement | Indique qu'une fonction accepte tout type de données. (voir la Section 32.2.5, « Types polymorphiques »). |
cstring | Indique qu'une fonction accepte ou retourne une chaîne de caractères du langage C (terminée par un NULL). |
internal | Indique qu'une fonction accepte ou retourne un type de données interne du serveur de bases de données. |
language_handler | Une fonction d'appel de langage procédural est déclarée retourner un language_handler. |
record | Identifie une fonction qui retourne un type de ligne non spécifié. |
trigger | Une fonction trigger est déclarée comme retournant un type trigger. |
void | Indique qu'une fonction ne retourne pas de valeur. |
opaque | Un type de données obsolète qui servait précédemment à tous les usages cités ci-dessus. |
Les fonctions codées en C (incluses dans le produit ou chargées dynamiquement) peuvent déclarer, accepter ou retourner chacun de ces pseudo-types. Il est de la responsabilité de l'auteur de la fonction de s'assurer que la fonction se comporte normalement lorsqu'un pseudo-type est utilisé comme type d'argument.
Les fonctions codées en langage procédural peuvent utiliser les pseudo-types si leur langage le permet. À ce jour, tous les langages interdisent l'usage d'un pseudo-type comme argument, et n'acceptent que void et record comme type retourné (plus trigger lorsque la fonction est utilisée comme trigger). Certains supportent aussi les fonctions polymorphes en utilisant les types anyarray et anyelement.
Le pseudo-type internal sert à déclarer des fonctions qui ne sont appelées que par la base de données en interne, et non pas directement par une requête SQL. Si une fonction a au moins un argument de type internal, alors elle ne peut être appelée depuis SQL. Pour préserver la sécurité de cette restriction, il est important de suivre cette règle de codage: ne créez pas de fonction qui retourne un internal si elle n'a pas au moins un argument de type internal.