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

Oracle Discussion :

[c#/vs2005] UPDATE: SQL -> Oracle


Sujet :

Oracle

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 284
    Points : 90
    Points
    90
    Par défaut [c#/vs2005] UPDATE: SQL -> Oracle
    Bonjour

    J'ai fais une appli en C# avec VS2005 et SQLServer2005
    Je suis entrain de passer de SQL à Oracle.
    Je voudrais savoir ce que je dois faire au niveau de la requete de 2 UPDATE.

    En SQL, dans le SQLDataSource ne pouvant faire de join etc, jai fais 2 update l'un derriere l'autre:
    UPDATE proact SET projet = @projet WHERE (projet = @original_projet)
    UPDATE cra SET projet = @projet WHERE (projet = @original_projet)

    Mais lorsque je veux faire cela en Oracle sa passe pas :s

    Comment dois-je transformer cela pour Oracle???
    Merci

  2. #2
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 284
    Points : 90
    Points
    90
    Par défaut
    Et je voudrais aussi savoir pourquoi cette requete ne passe pas en Oracle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM proact WHERE (projet = :original_projet) AND (projet NOT IN (SELECT projet FROM cra))
    Ou est le probleme??? :s

  3. #3
    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
    quel problème as-tu ? Comment cette requête est exécutée ?

  4. #4
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 284
    Points : 90
    Points
    90
    Par défaut
    Au niveau des 2 UPDATE que j'avais mis dans un SQLDataSource, quand dans ma table, j'utilise la modification, il me dis que la requete ne finis pas correctement, donc je suppose que 2 UPDATE ne marche pas avec Oracle.
    Donc je sais pas comment faire pour transformer les 2 requetes en une seule.
    J'ai essayé sa mais sa ne passe pas :

    UPDATE proact,cra SET cra.projet = :cra.projet, proact.projet = :proact.projet WHERE (cra.projet = :cra.original_projet) AND (proact.projet = :proact.original_projet)
    En ce qui concerne le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM proact WHERE (projet = :original_projet) AND (projet NOT IN (SELECT projet FROM cra))
    Lorsque je ne mets que sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM proact WHERE (projet = :original_projet)
    Ca marche!

    Mais quand je mets le tout, il me mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-01036: numéro/nom de variable interdit
    Donc je ne comprends pas :s

  5. #5
    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
    mais le : c'est pour du PL/SQL, je ne comprends plus là...

  6. #6
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 284
    Points : 90
    Points
    90
    Par défaut
    Comment ca??

    PL/SQL est un langage procédural propriétaire créé par Oracle et utilisé dans le cadre de bases de données relationnelles.

    Enfin, pour etre plus comprehensible, j'ai simplement voulu passer mon appli Web qui était en SQLServer 2005 en Oracle 10g
    Pour cela, je dois retoucher les requetes, et c'est ce qui me pose probleme pour certaines requetes

  7. #7
    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
    tu peux pas concaténer la valeur de ta variable à la chaîne de caractères ? Désolé je ne connais pas bien VB et je ne vois pas trop comment tu passes ladite variable

  8. #8
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 284
    Points : 90
    Points
    90
    Par défaut
    as besoin de connaitre le VB, je veux simplement transformer ma requete SQL en requete Oracle car ce n'est pas compatible a ce que je vois :s

  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
    oui mais ça dépend d'où tu la lance : SQL*Plus, Forms, VB, etc...

  10. #10
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 284
    Points : 90
    Points
    90
    Par défaut
    Je code en c# avec VS2005.
    Cette requete s'execute par le biais d'un SQLDataSource

  11. #11
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    donc je suppose que 2 UPDATE ne marche pas avec Oracle.
    Oui, je crois que le SQL Oracle est limité sur ce point.

    Mais les autres problèmes viennent probablement de la couche .Net ou de votre code, car l'exemple suivant fonctionne avec SQLPLUS et doit fonctionner avec n'importe quel language qui permet de définir des bind variables pour les requêtes SQL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
    SQL> drop table cra;
     
    Table dropped.
     
    SQL> drop table proact;
     
    Table dropped.
     
    SQL>
    SQL> create table proact (projet number primary key);
     
    Table created.
     
    SQL>
    SQL> create table cra (cr number, projet number references proact);
     
    Table created.
     
    SQL>
    SQL> insert into proact values (1);
     
    1 row created.
     
    SQL> insert into proact values (2);
     
    1 row created.
     
    SQL> insert into proact values (3);
     
    1 row created.
     
    SQL> insert into proact values (4);
     
    1 row created.
     
    SQL>
    SQL>
    SQL> insert into cra values (20, 2);
     
    1 row created.
     
    SQL> insert into cra values (30, 3);
     
    1 row created.
     
    SQL> insert into cra values (40, 4);
     
    1 row created.
     
    SQL>
    SQL>
    SQL> --
    SQL> -- variables sqlplus
    SQL> --
    SQL> var original_projet number;
    SQL>
    SQL> exec :original_projet := 1;
     
    PL/SQL procedure successfully completed.
     
    SQL>
    SQL> DELETE FROM proact WHERE (projet = :original_projet) AND (projet NOT IN (SELECT projet FROM cra));
     
    1 row deleted.
     
    SQL> COMMIT;
     
    Commit complete.
     
    SQL>
    SQL> SELECT * FROM proact;
     
        PROJET
    ----------
             2
             3
             4
     
    SQL>
    SQL> exit

  12. #12
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 284
    Points : 90
    Points
    90
    Par défaut
    Je ne sais pas mais ce qui est bizarre c'est que cette requete avec SQLServer marche, quand je fais en SQLServer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM proact WHERE (projet = @original_projet) AND (projet NOT IN (SELECT projet FROM cra));
    Ca marche nikel!

    Et sinon pour le UPDATE, comment pourrais-je transformer ces 2 updates en une seule pour qu'il n'y est le probleme???

  13. #13
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Essayez votre requête avec SQLPLUS comme je l'ai fait avec vos tables et vos données: si ça marche, c'est que le bug est très probablement côté client (.Net) et pas côté serveur (Oracle).

    Pour les 2 UPDATE qu''est-ce qui vous empêche de faire 2 exécutions de UPDATE différents ?

  14. #14
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 284
    Points : 90
    Points
    90
    Par défaut
    Bah les requetes sont configurés dans un SqlDataSource avec un UPDATE puis un autre a la ligne d'apres.
    Le probleme c'est qu'avec Oracle sa ne passe pas, il s'arrete a la premiere requete en disant qu'elle fini anormalement. Ce qui est normal puisque a la 2nde ligne il y a un autre update mais cela signifie qu'Oracle ne prends pas en compte les 2 updates.
    C'est pour sa que je cherche un moyen de fusionner les 2 updates pour n'en faire plus qu'un

  15. #15
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 284
    Points : 90
    Points
    90
    Par défaut
    En ce qui concerne le DELETE, j'ai essayé par SQLPlus et je constate que ca marche comme vous me l'aviez dis!!!
    Par contre si le bug est coté client je ne comprends pas car la requete passe quand je suis sous SQLServer et lorsque je me mets sous Oracle ca ne marche pas alors que je n'ai strictement rien changé :s

    En ce qui concerne les 2 UPDATES, je suis toujours a la recherche d'un passage de 2 UPDATE en 1

    Merci encore

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

Discussions similaires

  1. Sql server Oracle update -> Probleme
    Par pb_inge dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/08/2008, 21h12
  2. Réponses: 2
    Dernier message: 03/07/2007, 23h37
  3. [Oracle 9.1] Plantage update SQL et Timestamp
    Par ftrifiro dans le forum Oracle
    Réponses: 6
    Dernier message: 06/10/2005, 14h34
  4. Réponses: 3
    Dernier message: 21/06/2005, 10h23
  5. Migration SQL Server - Oracle 9i
    Par YOYOVbSQL dans le forum Migration
    Réponses: 2
    Dernier message: 02/09/2004, 11h47

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