Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2400 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Quelqu'un fait un peu de Pl/pg sql [EDIT]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Quelqu'un fait un peu de Pl/pg sql [EDIT]

n°1313020
xtof_83
Freeride Spirit
Posté le 24-02-2006 à 14:12:19  profilanswer
 

Bonjour ,
 
 
EDIT: Bon le probléme je l'ai réglé en faisant tout dans la meme fonction.
 
Mais là une question, il me faut un moment dans le programme, mettre un valeur dans un champs de type tableau qui ne peux être inialise..
je fais un select de cette valeur ce qui me dis dans un notice:
 
variable "%"     -----> variable "<NULL>"
 
mais jarrive pas derriére, à touver la condition qu'il faut pour dire :
 
si valeur = <NULL> alors mettre à 0
 
 
Merci d'avance... :hello:  
 
 
cette année petit projet en base de donné et on a l'honneur devoir apprendre le plpgsql,  
ça a l'air d'un bon petit langage de programmation bien puissant ;)
 
Mais j'ai des bug inexplicable: je m'explique:
 
j'ai 3 tables, l'une contenant des données considérable que nous devons analyser et mettre dans les autres table...Sur la logique pas de probléme...
 
donc :
 

Code :
  1. -- table a traiter
  2. CREATE TABLE articles2 (
  3. id serial,
  4. auteur varchar(3000),
  5. titre varchar(3000),
  6. abstract varchar(5000),
  7. primary key (id)
  8. );
  9. CREATE TABLE article (
  10. id serial,
  11. titre varchar(3000),
  12. abstract varchar(5000),
  13. PRIMARY KEY (id)
  14. );
  15. --Table pour les auteurs avec correspondance aux articles
  16. CREATE TABLE auteur (
  17. id serial,
  18. id_article integer,
  19. nom varchar(255),
  20. prenom varchar(255),
  21. PRIMARY KEY(id),
  22. FOREIGN KEY (id_article) REFERENCES article(id)
  23. );


 
puis j'ai commener a tape 2-3 fonction, l'une d'elle pour découper dans articles 2 les champs auteur:
 

Code :
  1. CREATE FUNCTION split_auteur(text) RETURNS INTEGER AS '
  2. DECLARE
  3.   chaine TEXT;
  4.   count INTEGER;
  5. BEGIN
  6.   RAISE NOTICE ''error % '',$1;
  7.   chaine:= $1;
  8. LOOP
  9.   IF(length(split_part(chaine,'' '',2))=0) THEN
  10.     EXIT;
  11.   ELSE
  12.     INSERT INTO auteur (nom,prenom) VALUES (split_part(chaine,'' '',1),split_part(chaine,'' '',2));
  13.   END IF;
  14.   IF(length(chaine)=length(split_part(chaine,'' '',1))+1+length(split_part(chaine,'' '',2))) THEN
  15.     EXIT;
  16.   ELSE
  17.     chaine:=overlay(chaine placing '''' from 1 for (length(split_part(chaine,'' '',1))+1+length(split_part(chaine,'' '',2)))+1);
  18.   END IF;
  19. END LOOP;
  20. RETURN 0;
  21. END;'
  22. LANGUAGE 'plpgsql';


 
qui marche nickel avec un :  

Citation :

select split_auteur('Daxin Jiang Jian Pein Aidong Zhang');
select * from auteur;


ou  

Citation :

select split_auteur('Daxin Jiang Jian Pein Aidong');
select * from auteur;


 
Mais alors now, je veux pour chaque liste d'auteur:
 

Code :
  1. CREATE FUNCTION parcours_all() RETURNS VOID AS '
  2. DECLARE
  3.   ida RECORD;
  4.   a INTEGER;
  5. BEGIN
  6. FOR ida IN SELECT * FROM articles2 LOOP
  7.   SELECT split_auteur(ida.auteur) INTO a;
  8. END LOOP;
  9. END;'
  10. LANGUAGE 'plpgsql';


 
Voilà ben ça me fais des bug assez aléatoire:
 

Citation :

ERROR:  cache lookup failed for function 32911
CONTEXT:  SQL statement "SELECT  insert_title_abstract( $1 , $2 )"
PL/pgSQL function "parcours_all" line 6 at select into variables


 
 
Merci d'avance


Message édité par xtof_83 le 25-02-2006 à 02:18:43
mood
Publicité
Posté le 24-02-2006 à 14:12:19  profilanswer
 

n°1313384
xtof_83
Freeride Spirit
Posté le 25-02-2006 à 02:20:44  profilanswer
 

[:baobab] car modification du probléme ;)
 
en espérans avoir plus de succé cette fois...
 
Merci


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Quelqu'un fait un peu de Pl/pg sql [EDIT]

 

Sujets relatifs
Opengl - Light &Normales+ [edit] probleme de mathEquivalent de PHP Edit (0.8) sous Linux ?
datagrid existe uniquement en asp.net? [edit][Firefox] Hauteur background image qui ne s'allonge pas [edit]
[VBS]Problème de taille d'un fichier non mis à jour...[EDIT]Trackbar et edit box
DevC++, le bug du siècle [edit : enfin pas tant que ça]Visual .NET, MFC, boîte de dialogue et Rich Edit
[Edit] Forcer Oracle à retourner une ligne avec des 0Edit Control
Plus de sujets relatifs à : Quelqu'un fait un peu de Pl/pg sql [EDIT]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR