| From: | Frederic Logier <fred(at)az-informatique(dot)com> | 
|---|---|
| To: | pgsql-sql(at)postgresql(dot)org | 
| Subject: | split function for pl/pgsql | 
| Date: | 2002-10-02 10:30:14 | 
| Message-ID: | 1033554614.16115.45.camel@ghost | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-sql | 
hi,
i'm looking for a split function, like perl or php.
I need doing a pl/pgsql function with a split return an array.
I must do some loop with this array for mass inserting.
I think of doing it with pl / perl but I need to do insert and I don't
find example with pl / perl and sql.
Here my function (not tested of course) :
 CREATE FUNCTION candidat_valid (varchar ,varchar ,varchar, varchar,
varchar, varchar, varchar, varchar, varchar, varchar, text, oid,
varchar, varchar, varchar) RETURNS boolean AS '
     DECLARE
	func_nom		ALIAS FOR $1;
	func_prenom		ALIAS FOR $2;
	func_adresse1		ALIAS FOR $3;
	func_adresse2		ALIAS FOR $4;
	func_ville		ALIAS FOR $5;
	func_cp			ALIAS FOR $6;
	func_pays		ALIAS FOR $7;
	func_email		ALIAS FOR $8;
	func_telephone		ALIAS FOR $9;
	func_gsm		ALIAS FOR $10;
	func_commentaire	ALIAS FOR $11;
	func_cv			ALIAS FOR $12;
	func_nom_fichier	ALIAS FOR $13;
	func_iddiplome  	ALIAS FOR $14;
	func_idqualification	ALIAS FOR $15;
	new_id	int4;
	indice int;
	tableau_diplome		int[];
	tableau_qualification	int[];
     BEGIN
new_id := output of "SELECT nextval('candidat_id_seq')";
	IF (func_nom_fichier == NULL) THEN
		INSERT INTO candidat (id, nom, prenom, adresse1, adresse2, ville, cp,
pays, email, telephone, gsm, commentaire) VALUES (new_id, func_nom,
func_prenom, func_adresse1, func_adresse2, func_ville, func_cp,
func_pays, func_email, func_telephone, func_gsm, func_commentaire);
	ELSE
	INSERT INTO candidat (id, nom, prenom, adresse1, adresse2, ville, cp,
pays, email, telephone, gsm, commentaire, cv, nom_fichier) VALUES
(new_id, func_nom, func_prenom, func_adresse1, func_adresse2,
func_ville, func_cp, func_pays, func_email, func_telephone, func_gsm,
func_commentaire, func_cv, func_nom_fichier);
	END IF;
indice := 0;
        tableau_diplome := split(',',func_iddiplome);
        tableau_qualification := split(',',func_idqualification);
while (tableau_diplome[indice]) {
	        INSERT INTO candidat_diplome (id_candidat, id_diplome) VALUES
(new_id,tableau_diplome[indice]);
        	indice := indice + 1;
        }
        indice := 0;
        while (tableau_qualification[indice]) {
	        INSERT INTO candidat_qualif (id_candidat, id_qualification)
VALUES (new_id,tableau_qualification[indice]);
	        indice := indice + 1;
        }
	 RETURN TRUE;
     END;
 ' LANGUAGE 'plpgsql';
-- 
AZ informatique
68 avenue Felix Faure 69003 Lyon
Tel : +33 (0) 472 844 949 direct : +33 (0) 472 844 956
Fax : 04 78 60 40 70
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Roberto Mello | 2002-10-02 13:25:39 | Re: PROBLEM SOLVED RE: please help with converting a view in oracle into postgresql readably code | 
| Previous Message | Roberto Mello | 2002-10-02 06:12:07 | Re: please help with converting a view in oracle into postgresql readably code |