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

Interfaces de programmation Oracle Discussion :

[ADO] Comment insérer une chaîne de grande taille (ORA-01461)


Sujet :

Interfaces de programmation Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Mars 2006
    Messages : 148
    Points : 80
    Points
    80
    Par défaut [ADO] Comment insérer une chaîne de grande taille (ORA-01461)
    Bonjour à Tous

    Je tiens a préciser que je suis débutant sous oracle donc prière d’être compréhensif avec moi.

    Mon problème est le suivant :
    Je développe une application web avec Visual Studio et je me sers d’oracle 8i comme SGBD. Je souhaite enregistrer dans la BD des donnes de grande taille genre 10 000 caractères. Au départ j’ai choisi pour ma colonne le Type LONG qui suite à mes recherches me permettrait de stocker près de 2 Giga de caractères.

    Quand je cherche à insérer un texte plutôt long dans la colonne j’obtiens l’erreur suivante.

    « ORA-01461: une valeur 'LONG' ne peut être liée que dans une colonne de type 'LONG' »

    Mais lorsque je diminue la taille de mon texte l’ajout s’effectue normalement. Ma question est donc la suivante. Comment corrigez cette erreur pour pouvoir insère une chaîne de caractère de très grande taille. J’ai essayé avec le type Clob mais j’obtenais la même erreur.

    En faisant des recherches sur la question j’ai trouver ces liens ou certains ont la solution à leur Problème mais moi je n’y comprends pas grand-chose.
    http://www.developpez.net/forums/arc...p/t-22243.html
    http://www.developpez.net/forums/arc...p/t-51678.html

    Merci de me venir en aide.

    PS : Désolé si je ne suis pas dans le Bon topic et merci de m’orienté.

  2. #2
    Expert éminent sénior
    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
    Points : 19 075
    Points
    19 075
    Par défaut
    ce serait pas mal d'avoir la commande qui génère l'erreur

    Sinon, tu as regardé du coté des CLOB ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Mars 2006
    Messages : 148
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par orafrance Voir le message
    ce serait pas mal d'avoir la commande qui génère l'erreur

    Sinon, tu as regardé du coté des CLOB ?
    Sa me fait déjà un grand bien que tu réagisses.

    L’erreur se trouve qu moment ou j’exécute la commande insert avec une chaîne de plus de 4000 caractères. Mais quand je diminue le nombre de caractère l’insertion ou l’update s’effectue.
    J’ai changer de Type, initialement j’avais un type Long ; j’ai mis un type clob pour faire des tests mais jusqu’ici sa ne passe toujours pas

  4. #4
    Expert éminent sénior
    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
    Points : 19 075
    Points
    19 075
    Par défaut
    on n'a toujours pas la commande d'update

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Mars 2006
    Messages : 148
    Points : 80
    Points
    80
    Par défaut
    Pour la Mise à Jour de mes Données sous VS 2005 j’utilise un SqlDataSource configurer de la sorte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:cn_web_portal %>"
            DeleteCommand='DELETE FROM "ACTU" WHERE "CODE_ACTU" = :CODE_ACTU' InsertCommand='INSERT INTO "ACTU" ("CODE_ACTU", "TITRE1", "CHAPEAU", "CORPS1", "OWNER1", "DATE_PUBLICATION") VALUES (:CODE_ACTU1, :TITRE1, :CHAPEAU1, :CORPS1, :OWNER1, :DATE_PUBLICATION1)'        ProviderName="<%$ ConnectionStrings:cn_web_portal.ProviderName %>" SelectCommand='SELECT CODE_ACTU, TITRE1, CHAPEAU, CORPS1, OWNER1, DATE_PUBLICATION, VALIDE FROM ACTU WHERE (VALIDE = 0) ORDER BY DATE_PUBLICATION asc'
            UpdateCommand='UPDATE "ACTU" SET "TITRE1" = :TITRE1, "CHAPEAU" = :CHAPEAU, "CORPS1"= :CORPS1,  "OWNER1" = :OWNER1, "DATE_PUBLICATION" = :DATE_PUBLICATION WHERE "CODE_ACTU" = :CODE_ACTU'>
    Avec mes paramètres définis ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    <UpdateParameters>
                <asp:Parameter Name="TITRE1" Type="String" />
                <asp:Parameter Name="CHAPEAU" Type="String" />
                <asp:Parameter Name="CORPS1" Type="String" />            <asp:Parameter Name="OWNER1" Type="String" />
                <asp:Parameter Name="DATE_PUBLICATION" Type="DateTime" />
               
                <asp:Parameter Name="CODE_ACTU" Type="Decimal" />
            </UpdateParameters>
    c’est la colonne nommé Corp1 qui de type Clob au niveau d’oracle.

    Je me demande si le fait que le paramètre corp1 de la requete update soit de type « string » pourrait etre à l’origine de ce Problème ? si oui quel type de données pourrais je utiliser pour ce paramètre ?

    Merci.

  6. #6
    Expert éminent sénior
    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
    Points : 19 075
    Points
    19 075
    Par défaut
    oui, je pense que string n'est pas suffisamment grand

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Mars 2006
    Messages : 148
    Points : 80
    Points
    80
    Par défaut
    Je vais voir si VS propose un type approprié pour ce cas. Je verifie avec Empty et Object. Si je ne trouve rien il faudra tout coder comme au bon vieux temps .

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Mars 2006
    Messages : 148
    Points : 80
    Points
    80
    Par défaut
    Citation Envoyé par orafrance Voir le message
    oui, je pense que string n'est pas suffisamment grand
    Excuse moi de revenir dessus mais je ne comprends pas pourquoi le type String poserais un problème il est dit sur le lien suivant qu’il peut recevoir près de 2 milliards de caractère.

    http://msdn.microsoft.com/fr-fr/libr...36(VS.80).aspx

    Je ne sais plus quel type de donnée utilisée pour mon paramètre.

  9. #9
    Expert éminent sénior
    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
    Points : 19 075
    Points
    19 075
    Par défaut
    je ne suis pas spécialiste de VB désolé

  10. #10
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    la taille des string de VB n'a rien à voir avec ton problème.

    Oracle ne permet de binder des strings que pour une taille <= 4000 octets.

    vb/asp/ado traitent les long oracle comme des strings.

    Donc insérer des strings > 4000 octets ne peut se faire par le biais des lobs (clob en l'occurrence).

    Je ne connais pas très bien quel est le support de vb/asp/ado pour les lobs oracle.

    Par contre, quelque soit la nature du champs oracle, si tu bindes ton champs comme "string", tu sera toujours limité à 4000 octets.

    Il faut donc que tu bindes ton champs comme un lob.
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : Cameroun

    Informations forums :
    Inscription : Mars 2006
    Messages : 148
    Points : 80
    Points
    80
    Par défaut
    Je crois avoir trouver la solution à mon Problème . Au niveau de ma Base de données Oracle 8i J’ai choisi le type CLOB. Au niveau de la déclaration de mes Paramètres sous VB, pour le champ correspondant j’ai choisi le type EMPTY et plus le type string.

    Merci à chacun de vous spécialement à Orafrance et vicenzo.
    Bon code à tous.

  12. #12
    Membre actif Avatar de g_tarik0010
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 186
    Points : 284
    Points
    284
    Par défaut
    Bonsoir,

    Ayant le probleme que toi, je voudrais bien savoir si tu as le lien de la doc pour le type Empty car je ne trouve pas

    Merci pour votre reponse

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/01/2007, 15h52
  2. comment costruire une chaîne de connexion ADO runtime
    Par lassad dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/10/2005, 14h16
  3. [Crystal Reports 9] comment insérer une image dans Détails
    Par VVE dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 22/10/2003, 17h06
  4. Réponses: 3
    Dernier message: 28/09/2003, 10h46

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