Hello les experts,

J'ai un petit souci avec les fonctions current_database et current_user.
Dans mes tests ci-dessous on voit que parfois il faut utiliser () après la fonction pour avoir le résultat et parfois non...
Je comprends que current_database et current_user sont des fonctions car ils renvoient un résultat (à la différence d'une procédure) mais pourquoi pour certaines fonctions faut-il obligatoirement utiliser () et pour d'autres non?

Quelque chose me dit que mon analyse ci-dessus est fausse mais... où?
Dernier point : je ne comprends pas le message d'erreur "la colonne « current_database » n'existe pas" : pourquoi parler de colonne?

Merci pour vos réponses.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
postgres=# select current_database;
ERREUR:  la colonne « current_database » n'existe pas
LIGNE 1 : select current_database;
                 ^
 
postgres=# select current_database();
 current_database
------------------
 postgres
(1 ligne)
 
 
postgres=# select current_user;
 current_user
--------------
 postgres
(1 ligne)
 
 
postgres=# select current_user();
ERREUR:  erreur de syntaxe sur ou près de « ( »
LIGNE 1 : select current_user();
                             ^
postgres=#