IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

[Oracle 10g - .NET] Passage d'un tableau en paramètre d'une requête


Sujet :

SQL Oracle

  1. #1
    Membre éclairé Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Par défaut [Oracle 10g - .NET] Passage d'un tableau en paramètre d'une requête
    Salut les loulous !

    Je travaille sur .NET en C# et je développe une bibliothèque géométrique basée sur NetTopologySuite. Je récupère et je sauvegarde mes géométries sur une base Oracle Spatial (Oracle 10g).
    Je rencontre un soucis qui peut très vite être bloquant pour mon appli. Je sais pas si vous connaissait la structure d'un objet Oracle Spatial : SDO_GEOMETRY, mais bon à la limite c'est pas grave... Si j'ai un polygone défini par 10 000 points par exemple (chose qui n'est pas rare du tout), je peux pas caler mes 10 000 points directement dans la requête par une concaténantion, car Oracle me jette en me disant : Too many arguments. Par sécurité, j'ai vérifier la taille des tableaux de points que supporte Oracle : 1 048 576 occurences... donc c'est pas ça qui gène. Je pense qu'au dela d'un certains nombre de caractères, Oracle n'accepte plus la requête, je ne sais pour quelle raison !
    Ce que je voudrais faire : au lieu de passer toute la chaîne de points directement, passer en paramètre un tableau de points pour pas que le Text de la requête explose et pour que je puisse passer autant de points que je veux !
    J'ai regardé du côté de la classe OracleParameterCollection mais je n'arrive pas à la faire fonctionner...

    Si certains pouvez m'eclairer la dessus, ce serait cool ! Merci beaucoup et @+
    Antoine

  2. #2
    Membre éclairé Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Par défaut
    Nobody knows ?

  3. #3
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    et c'est pas possible de mettre la liste des points dans un fichier plat sur lequel tu vas créer une table externe ?

  4. #4
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    Salut,
    tout d'abord, utilise l'API fournie par Oracle ODP.Net (Oracle.DataAccess.Client) et non pas celle fournie par 'crosoft (System.Data.OracleClient)...

    ensuite il ne faut pas confondre :
    OracleParameterCollection est la collection DES PARAMETRES que tu va fournir à ta procédure... et non pas UN paramètre de type collection...

    pour passer une collection de et vers .NET avec Oracle, un type à dispo au niveau .Net est le curseur (OracleDbType.RefCursor). Sinon il existe une Enumération OracleCollectionType qui représente un PLSQLAssociativeArray.

    CollectionType

    This property specifies whether the OracleParameter represents a collection, and if so, specifies the collection type.


    Declaration

    // C#
    public OracleCollectionType CollectionType { get; set; }

    Property Value

    An OracleCollectionType enumerated value.


    Exceptions

    ArgumentException - The OracleCollectionType value specified is invalid.


    Remarks

    Default = OracleCollectionType.None. If OracleParameter is used to bind a PL/SQL Associative Array, then CollectionType must be set to OracleCollectionType.PLSQLAssociativeArray.
    plus d'info ici http://download-uk.oracle.com/docs/c...2.htm#BABJEFCI

  5. #5
    Membre éclairé Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Par défaut
    Yép ! Merci de vos réponses, au moins j'ai des pistes à explorer ! orafrance j'ai pas bien compris ta réponse mais vu que je maîtrise pas tant que ça les bases de données, ça me parraît un peu Trash ce que tu me dis, je me dis "il essaye de communiquer avec moi mais je capt'pas..."
    Yorglaa, bien évidemment, j'utilise l'API Oracle, je vais faire des recherches du côté de RefCursos alors Merci
    Pour le moment j'avais essayer les procédures stockées en passant des types VARRAY ou TABLE en paramètres mais bon ça reste encore un peu flou... la concordance de mon tableau de points et du VARRAY... je sais pas encore ! Et dans ma requête du programme PL/SQL ben je peux pas passer le tableau directement, je suis obliger de fabriquer une chaîne... de type VARCHAR2 donc je vais encore être kéblo...
    Merci de vos réponses, je vous tiens au jus !
    @++
    Antoine

  6. #6
    Membre éclairé Avatar de NeraOne
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 218
    Par défaut
    Merci pour ton aide Yorglaa, j'ai réussi a faire ce que je voulais ! J'arrive donc a enregistrer, via une procédure stockée, n'importe quelle géométrie quelque soit sa taille !
    Si certains sont interessés pour avoir le code, n'hésitez surtout pas !

    Merci encore et @ la prochaine
    ++
    Antoine

  7. #7
    Invité de passage
    Inscrit en
    Septembre 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1
    Par défaut
    Bonjour
    Moi ça m'interesse !

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/03/2009, 18h37
  2. Réponses: 11
    Dernier message: 18/07/2007, 10h43
  3. Réponses: 6
    Dernier message: 24/07/2006, 15h22
  4. [JpGraph] Passage d'un tableau en paramètre dans une URL pour JPgraph
    Par crazydiver_e2 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 16/01/2006, 16h15
  5. Réponses: 7
    Dernier message: 18/05/2005, 15h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo