PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 03/02/2021 19:15:56

Christof25
Membre

instruction code erreur

Bonjour

Dans mon SQL, si une condition n'est pas vérifiée, j'aimerai retourner un code de retour spécifique.
J'ai tenté de mettre RETURN mais cela ne passe pas dans mon cas :

SELECT COUNT(*) = 0 AS user_not_exist FROM pg_user WHERE usename = :'p1' \gset

\if :user_not_exist

SELECT CASE
    WHEN :'p2' = 'indus' THEN 'roleadmin'
    ELSE 'roleread'
END AS profil
\gset
CREATE USER :p1 NOCREATEDB IN GROUP :"profil";
\echo Creation user :p1 done!
\else
\echo 'Warning ! User :p1 already exist on database
RETURN '99';
\endif

Si l'utilisateur existe déjà, je le saurais avec un CR à 99.

Mais j'ai l'erreur suivante :

psql:/users2/eba00/exploit/sql/eba_0pum_createUser.sql:14: ERROR:  syntax error at or near "RETURN"
LINE 1: RETURN '99';
        ^

Idem avec un \ devant

Merci

Hors ligne

#2 03/02/2021 19:24:42

rjuju
Administrateur

Re : instruction code erreur

Bonjour,


Malheureusement le code retour de psql est normalisé et ne peut pas être modifié, cf https://www.postgresql.org/docs/current/app-psql.html:

Exit Status
psql returns 0 to the shell if it finished normally, 1 if a fatal error of its own occurs (e.g., out of memory, file not found), 2 if the connection to the server went bad and the session was not interactive, and 3 if an error occurred in a script and the variable ON_ERROR_STOP was set.

Hors ligne

#3 05/02/2021 10:03:26

Christof25
Membre

Re : instruction code erreur

Merci rjuju

Hors ligne

Pied de page des forums