Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 PL/pgSQL » executer un fichier » 23/02/2012 00:01:39
- geoetl
- Réponses : 2
peux t on lancer un fichier ( .sh, .cmd etc...) depuis une fonction ecrite en simple PL sql ?
si oui comment je lance par example le fichier batch toto.cmd sur c:\ (example crosoft mais se sera sur un serveur linux)
a + et merci
Julien
#2 Re : PL/pgSQL » Utilisation d'un RECORD dans un trigger » 22/02/2012 23:55:04
essayons de comprendre le sujet...
1- J'ai une succession de troncons sur une route avec un ID/troncon (table 2)
//donc cette table 2 contient des troncons avec un id ok.
la notion de route on s'en moque semble t il ( simple regroupement de troncon successif)
2- Je dessine une ligne à cheval sur 2/3/3/4... troncons (TABLE 1)
alors... tu dessine un ligne dans la table 1 et cette ligne couperait X troncon....
si c'est ca alors tu dessinerais une ligne en zig-zag et cette ligne couperait ici 1 foi le T2, deux fois le T3, une foi le T4 etc...
bizard mais continuons
3- Le trigger entre en jeu, et récupére l'ID des 2/3/4... troncons et je l'intègre dans un champ idtroncon1/idtroncon2/idtroncon3/idtroncon4...
je dirais plutot que : la ligne coupe tes troncons, tu chercherais donc a recuperer les valeurs des 4 intersections (ce que ne fait pas ton trigger...),
tu peux grouper et compter puisqu'il y a deux foi le troncon n°3 qui est intersecté, tu recupere dans ton example les 3 lignes suivantes
id_dessin : id_troncon : nbdechevauchement
ligne dessiné : coupe t2 : 1 foi
ligne dessiné : coupe t3 : 2 foi
ligne dessiné : coupe t4 : 1 foi
donc ton resultat est a stocker dans une table de relation entre table1 et table 2, cette table contient 2 colonnes qui forment une PK_double (id_dessin+ id_troncon), chacun etant une FK de table 1 et table 2. quant au champ nbdechevauchement, libre a toi de le mettre ou pas.
donc tu obtiens 4 lignes suite a l'intersection ( disons 3 lignes si y'a un group by sur tronçon)
donc ton trigger doit boucler sur ces 3 lignes pour les inserer dans la table de relation :
---------------------
DECLARE meschevauchement RECORD;
FOR meschevauchement IN
SELECT blabla bla WHERE ST_intersect (NEW.wkb_geometry1, test_sdf.wkb_geometry) group by blabla...
LOOP
insert into table_de_realtion values (id_dessin, id_troncon, nbchevauchement)
ou alors c'est EXECUTE 'INSERT INTO ' je sais plus..........
END LOOP;
etc.....
va voir le loop ici par exemple :
http://www.postgresql.org/docs/8.3/inte … URES-LOOPS
bye,
Julien
------------
Pages : 1