Vous n'êtes pas identifié(e).

#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

------------

Pied de page des forums

Propulsé par FluxBB