Bonjour,

Je suis en train d'écrire un billet de blog sur la gestion des erreurs et exceptions dans une procédure SQL (MySQL et PostgreSQL) et je suis confronté à un petit souci...

En MySQL, dans l'onglet SQL de phpMyAdmin, je peux faire ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
-- Cas normal : Insertion d'une personne puis utilisation de son identifiant pour l'appel de la procédure
INSERT INTO te_personne_prs (prs_nom, prs_prenom, prs_date_naissance)
VALUES ('Bellucci', 'Monica', '1964-09-30');
SET @id_personne = LAST_INSERT_ID();
CALL pi_ajout_utilisateur (@id_personne, NULL, NULL, NULL, 'mbellucci', 'Son_Pass');
SELECT @id_personne;
-- > @id_personne = 2 => OK
Lorsque j'essaie un équivalent dans la fenêtre Query de PGAdmin III, ça coince !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
INSERT INTO te_personne_prs (prs_nom, prs_prenom, prs_date_naissance)
VALUES ('Bellucci', 'Monica', '1964-09-30');
SET id_personne = SELECT CURRVAL('te_personne_prs_prs_id_seq');
SELECT pi_ajout_utilisateur (id_personne, NULL, NULL, NULL, 'mbellucci', 'Son_Pass');
SELECT id_personne;
=>
ERROR: syntax error at or near "SELECT"
LIGNE 3 : SET id_personne = SELECT CURRVAL('te_personne_prs_prs_id_seq...
^
J'ai essayé diverse choses, comme un DECLARE id_personne INTEGER; avant la première requête mais c'est le INTEGER qui ne lui a pas plu, ou bien un SELECT CURRVAL('te_personne_prs_prs_id_seq') into id_personne sans plus de succès.

Quelqu'un peut me dire comment rendre ça fonctionnel ?