|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() Inscription : mai 2002 Messages : 635 ![]() |
Bonjour,
Voici ma petite requête : $body$ DECLARE nb_lignes BIGINT; BEGIN SELECT COUNT(membre_maj_id) INTO nb_lignes FROM membre_maj WHERE membre_maj_membre_id = $1 AND membre_maj_membre_id_crypte = $2; IF nb_lignes=1 THEN /* instructions update*/ ELSE /* instructions insert */ END IF RETURN ; END; $body$ LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;[/CODE] j'ai fait un type pour retourner nb_lignes mais je n'arrive pas à récupérer cette valeur de nb_lignes??? Une petite aide serait appréciable Merci Merci |
|
|
00
|
|
|
#2 | ||
|
Membre émérite
![]() ![]() Inscription : mars 2002 Messages : 770 ![]() |
En fait l'affectation a une variable ce fait comme ca :
SELECT INTO variable1,variable2 5,99 ainsi pour ta requete : Code :
|
||
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() Inscription : mai 2002 Messages : 635 ![]() |
ah bon ?
J'ai déjà fait ça : SELECT COUNT(membre_maj_id) INTO nb_lignes dans des requêtes et ça marche très bien... |
|
|
00
|
|
|
#4 |
|
Membre émérite
![]() ![]() Inscription : mars 2002 Messages : 770 ![]() |
Oui sûr,
En plPgSQL c'est bien cette syntaxe Le SELECT .... INTO ..... FROM ... est pour creer directement une table venant d'un jeu d'enregistrement. |
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Inscription : mai 2002 Messages : 635 ![]() |
Je te crois mais pourquoi ça fonctionne alors ? Oui j''ai lu que c'est assez laxiste et le INTO placé comme le mien fonctionne aussi.
Quoiqu'il en soit ce n'est pas du à cela que je n'arrive pas à récupérer la variable nb_lignes en retour de la requête enfin je ne pense pas |
|
|
00
|
|
|
#6 | ||||
|
Membre émérite
![]() ![]() Inscription : mars 2002 Messages : 770 ![]() |
Effectivement j'ai vu sur certains sites qu'il y avait ta notation, personnelement je ne l'avais jamais utilisé.
Peux tu faire l'essai avec l'autre methode ? Et il y a un autre truc que je viens de voir Code :
Code :
|
||||
|
|
00
|
|
|
#7 |
|
Membre habitué
![]() Inscription : mai 2002 Messages : 635 ![]() |
oui ça fonctionne avec l'autre syntaxe je viens d'essayer
par contre quelle est la différence entre ce que tu me dis et ce que j'ai fait ? dans les deux cas ça fonctionne . Oui je vois pourquoi tu me demandes cela mais count ne sera jamais supérieur à 1 |
|
|
00
|
|
|
#8 | |
|
Membre émérite
![]() ![]() Inscription : mars 2002 Messages : 770 ![]() |
Citation:
|
|
|
|
00
|
|
|
#9 |
|
Membre habitué
![]() Inscription : mai 2002 Messages : 635 ![]() |
ben si count = 3 alors la requete a foirée à un moment et ça craint pour postgresql quand même
Enfin je n'ai toujours pas résolu mon problème comment retourner une valeur d'une variable en l'occurence ici nb_lignes car j'ai besoin de cette valeur dans mon script php. |
|
|
00
|
|
|
#10 | |||
|
Membre émérite
![]() ![]() Inscription : mars 2002 Messages : 770 ![]() |
Citation:
Pour recup dans ta fonction Tu declare ta procedure avec un type renvoyé int4, et que tu met return nb_lignes : Code :
|
|||
|
|
00
|
|
|
#11 |
|
Membre habitué
![]() Inscription : mai 2002 Messages : 635 ![]() |
pourquoi pas un type renvoyé bigint comme nb_lignes ?
|
|
|
00
|
|
|
#12 |
|
Membre émérite
![]() ![]() Inscription : mars 2002 Messages : 770 ![]() |
Comme tu veux, arrivera tu a la limite du INT ?
Pour rappel : INT les entiers signés : de -2 147 483 648 à 2 147 483 647. les entiers non-signés : de 0 à 4 294 967 295. BIGINT les entiers signés : de -9 223 372 036 854 775 808 à 9 223 372 036 854 775 807. les entiers non-signés : de 0 à 18 446 744 073 709 551 615. |
|
|
00
|
|
|
#13 |
|
Membre habitué
![]() Inscription : mai 2002 Messages : 635 ![]() |
Ok super ça fonctionne ! merci !!!
juste une dernière question, je passe ce week end de la version 8.0.3 à la 8.1.4 as-tu un conseil à me donner ou tout devrait se passer nickel ? |
|
|
00
|
|
|
#14 |
|
Membre habitué
![]() Inscription : mai 2002 Messages : 635 ![]() |
au fait si je dois retourner plusieurs variables je peux mettre RETURN var 1, var 2, var 3 et créer un type pour ce retour ?
|
|
|
00
|
|
|
#15 | ||||
|
Membre émérite
![]() ![]() Inscription : mars 2002 Messages : 770 ![]() |
le return ne renvoi qu'une valeur/variable
mais il y a une parade, creer un type composite Code :
Code :
|
||||
|
|
00
|
|
|
#16 |
|
Membre habitué
![]() Inscription : mai 2002 Messages : 635 ![]() |
alors là j'ai appris quelque chose ! merci !!!!!
|
|
|
00
|
|
|
#17 |
|
Membre habitué
![]() Inscription : mai 2002 Messages : 635 ![]() |
mais je dois quand même déclarer ma procédure avec un type renvoyé ?
|
|
|
00
|
|
|
#18 |
|
Membre émérite
![]() ![]() Inscription : mars 2002 Messages : 770 ![]() |
oui change le type de retour par ton nouveau type
|
|
|
00
|
|
|
#19 |
|
Membre habitué
![]() Inscription : mai 2002 Messages : 635 ![]() |
ok ben grand merci j'ai progressé ce soir !!!!
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com