Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Wed 28 February 2007 11:46

Cartosig
Participant assidu
Date d'inscription: 16 Oct 2006
Messages: 222

Insertion de lignes dans table Oracle

Bonjour,

Je souhaite insérer une nouvelle ligne dans une table Oracle via MapInfo.
La source est une table native (sur mon HDD).

la fonction Server_Execute permet de faire celà mais je bute sur l'insertion du champ objet.

Les champs alphanumériques passent sans problème, par contre l'insertion de la colonne Obj dans le champ GEOM d'Oracle provoque une erreur : le serveur ne reconnait pas cette colonne Obj.

ma commande est :

Server_Execute ( MaConnectionOracle , "Insert Into MaTableOracle Values (VariableTexte, VariableEntier, VariableObjet") )

l'erreur retournée est :
"ORA-00936 : Expression Absente"
En effet le serveur considère que le nombre de champs source est différent du nombre de champs destination (puisque la variable objet n'est pas reconnue)

Savez-vous comment insérer des objets depuis MapInfo vers Oracle via la commande Server_Execute( , "Insert...") ?

Hors ligne

 

#2 Thu 01 March 2007 19:08

benjamincampin
Juste Inscrit !
Date d'inscription: 8 Sep 2005
Messages: 5

Re: Insertion de lignes dans table Oracle

Bonjour,

D'apres mon experience avec Oracle Spatial,

Pour faire créer un nouvel enregistrement (avec une geometrie nulle) dans oracle, je fais exécuter une Stored Procedure.

Ensuite, je fais un Update sur le champ obj de la table Oracle.

Hors ligne

 

#3 Fri 02 March 2007 09:58

Cartosig
Participant assidu
Date d'inscription: 16 Oct 2006
Messages: 222

Re: Insertion de lignes dans table Oracle

Merci pour votre réponse mais j'ai réussi a contourner le problème des passages de géométries de la colonne Obj de MapInfo vers Oracle en n'utilisant que des tables stockées sur le serveur et non plus sur mon poste.

Par contre je n'ai toujours pas de réponse sur le moyen de transférer via une application MapBasic des géométries stockées dans une table de mon HDD vers le serveur Oracle...

Qu'appelez-vous une Stored Procedure ?

Edit : je supose qu'il s'agit d'une procédure stockée dans un package SQL Oracle

Dernière modification par Cartosig (Fri 02 March 2007 10:43)

Hors ligne

 

#4 Mon 05 March 2007 23:30

benjamincampin
Juste Inscrit !
Date d'inscription: 8 Sep 2005
Messages: 5

Re: Insertion de lignes dans table Oracle

Bonjour,

Une "stored procedure" est une procedure stockée (je ne suis pas certain de la traduction), c'est du code exécuté par Oracle, une série d'instructions.
J'ai une table linkée (nomée Oracle_Table) sur mon DD. C'est juste un fichier .TAB qui contient les paramètres de connection à la table Oracle.
Ma "stored procedure" créé un enregistrement sans géometrie dans la table Oracle.
L'opération consiste à faire une mise a jour de la géométrie, car l'enregistrement existe déjà.
Je pars d'un objet sélectionné.
Exemple de code:
'sélectionne la géométrie
myobj = Selection.obj
'sélectionne l'enregistrement cible
Select * from Oracle_Table where ID=12 into upd_table
'Met à jour la table
Update upd_table set Obj = myobj
'Ferme la table
Close table upd_table
'Enregistre la table
Commit Table Oracle_Table

Bonne Chance,
Benjamin

Hors ligne

 

#5 Tue 06 March 2007 09:47

Cartosig
Participant assidu
Date d'inscription: 16 Oct 2006
Messages: 222

Re: Insertion de lignes dans table Oracle

Dans l'exemple que vous proposez, la géométrie est insérée dans la table upd_table, qui est le résultat d'un Select direct dans le code MapBasic (a moins que vous ayez oublié de préciser que ce Select est envoyé au server avec une fonction MB du type Server_Execute).
Le résultat d'une telle sélection est une table native (sur le HDD) et non une table Oracle.
Toujours dans votre exemple vous fermez ensuite cette table sans la sauvegarder, et vous effectuez le commit sur la table Oracle qui n'a pas été mise a jour !

Soit j'ai mal compris votre réponse, soit il faut être plus explicite, soit la solution est différente !
Merci quand même pour votre aide !
Cordialement

Hors ligne

 

#6 Wed 07 March 2007 18:38

benjamincampin
Juste Inscrit !
Date d'inscription: 8 Sep 2005
Messages: 5

Re: Insertion de lignes dans table Oracle

Bonjour,

Oracle_table est une table liée

La mise a jour de la table Oracle se fait par la commande:

Update upd_table set Obj = myobj

Car la table upd_table et Oracle_Table sont liées.

Meme si on ferme la table, la mise à jour est faite quand meme.

Et on sauve la table Oracle par la suite.

Benjamin

Hors ligne

 

#7 Thu 08 March 2007 09:53

Cartosig
Participant assidu
Date d'inscription: 16 Oct 2006
Messages: 222

Re: Insertion de lignes dans table Oracle

Ok je comprend le principe, je n'ai plus qu'a essayer de faire pareil !

Merci

Hors ligne

 

Pied de page des forums

Powered by FluxBB