Bonjour,
en cours de mon stage je suis amené à réaliser des procédures stockées via postgreSQL 8.4, et ce pour une performance d'appel des requettes en terme de temps d’exécution, dans le script que je vous expose, j'ai du pour réduire le temps d'execution stocker le résultat d'un select dans un Record afin de boucler avec au lieu de l'utiliser directement au niveau de la boucle , chose qui me retourne l'erreur en dessous :calim2 :, quand j'appelle ma fonction au niveau de la console:
script:
------
Requêttes d'appel:
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 drop function deleteuser(integer); CREATE OR REPLACE FUNCTION deleteuser(userid integer) RETURNS integer AS $BODY$ DECLARE i integer; tab record; BEGIN update billing_user set deleted=true where id_user=userid; select into tab id_user from billing_reseller where id_super_user=userid; for i in select tab LOOP PERFORM deleteuser(i); END LOOP; return 1; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION "deleteuser"(integer) OWNER TO postgres;
------------------
SELECT deleteuser(2);
Erruer retournée:
-----------------
____________________________________________________________________________________________________________________________
ERREUR: syntaxe en entrée invalide pour l'entier : « (4) »
CONTEXT: PL/pgSQL function "deleteuser" line 7 at FOR sur des lignes de SELECT
********** Erreur **********
ERREUR: syntaxe en entrée invalide pour l'entier : « (4) »
État SQL :22P02
Contexte : PL/pgSQL function "deleteuser" line 7 at FOR sur des lignes de SELECT
vous trouverez ci-joint les images correspondant aux tables, je serais très reconnaissant pour tout aide, car je suis affreusement coincé.![]()
Partager