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

PL/SQL Oracle Discussion :

Peut-on déclarer un curseur hors de IS/AS


Sujet :

PL/SQL Oracle

  1. #1
    bruce-willis
    Invité(e)
    Par défaut Peut-on déclarer un curseur hors de IS/AS
    Voici la déclaration d'un curseur dans une procédure Sql Server dont je suis entrain de traduire en Oracle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DECLARE cWire CURSOR FOR
    			SELECT Type FROM Table1 WHERE (Table1.IDCable IS NULL) 
    			AND EXISTS (  SELECT * FROM Table2 WHERE Table1.ID = IDWire AND IDEquipment = @IdEquipment )
    Premièrement, EXISTS n'existe pas pour Oracle donc pour l'émuler, on peut obtenir le COUNT() de ce SELECT et c'est vrai quand c'est supérieur à 0 donc

    Le problème est que la déclaration d'un curseur dans une procédure doit se faire dans le bloc IS...BEGIN non?

  2. #2
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Citation Envoyé par bruce-willis Voir le message
    Premièrement, EXISTS n'existe pas pour Oracle
    Si bien sûr!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SQL> select 1 from dual where exists (select null from all_objects where object_name like 'DBMS%');
             1
    ----------
             1
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 119
    Points : 114
    Points
    114
    Par défaut problème!?
    Citation Envoyé par bruce-willis Voir le message
    Le problème est que la déclaration d'un curseur dans une procédure doit se faire dans le bloc IS...BEGIN non?
    c vrai, mais où est le problème?
    si tu veux que ton curseur soit dynamique, cad que le résultat de ta requête change de temps en temps, tu peux créer un curseur avec paramètre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cursor c_emp(param_emp_id varchar) is select * from emp where emp_id = param_emp_id;

  4. #4
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 437
    Points
    1 437
    Par défaut
    EXISTS existe bel et bien sous Oracle mais on peut seulement l'utiliser dans un "SQL Statement" mais pas comme condition d'un IF THEN

    Donc concernant ton curseur, ce qui est à traduire c'est seulement DECLARE...CURSOR en CURSOR...IS

    Notez aussi l'utilisation de curseur dynamique dont parle guizaniseifislam!!!
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  5. #5
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par randriano Voir le message
    ...
    Notez aussi l'utilisation de curseur dynamique dont parle guizaniseifislam!!!
    Salut randriano,

    Petit remarque: Guizaniseifislam parle d'un curseur paramétré et non pas d’un "curseur dynamique."

    Deuxième petit remarque : cette notion « curseur dynamique » n’est pas vraiment correcte.

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 119
    Points : 114
    Points
    114
    Par défaut
    merci pour cet eclaircissement concernant les curseurs, cad qu'on dit curseur paramétré et non pas curseur dynamique. L'essentiel c que bruce-willis trouve ce qu'il cherche.

  7. #7
    bruce-willis
    Invité(e)
    Par défaut
    Donc EXISTS fonctionne sous Oracle, merci!!

    Mais ce que je me demande aussi si la déclaration de curseur doit donc toujours être dans IS...BEGIN? C'est là qu'on a besoin du curseur avec paramètres???

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 119
    Points : 114
    Points
    114
    Par défaut
    Citation Envoyé par bruce-willis Voir le message
    Mais ce que je me demande aussi si la déclaration de curseur doit donc toujours être dans IS...BEGIN?
    oui la déclaration d'un curseur paramétré ou non est dans IS...BEGIN

    C'est là qu'on a besoin du curseur avec paramètres???
    si tu veux boucler sur des données de la base mais après BEGIN, tu peux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    begin
    for rec in (select sysdate from dual) loop
    dbms_output.put_line('xxx ' || rec.sysdate );
    end loop;
    end;

  9. #9
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Pour en savoir plus sur les curseurs, je te conseille ce tuto :
    http://sheikyerbouti.developpez.com/...=Chap1#L1.2.22
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

Discussions similaires

  1. Comment déclarer une constante hors-objet
    Par jimbolelephan dans le forum C#
    Réponses: 13
    Dernier message: 07/07/2008, 09h00
  2. Peut-on déclarer une constante dans un ActionForm
    Par g_g_30 dans le forum Struts 1
    Réponses: 1
    Dernier message: 10/12/2007, 14h34
  3. l'évenement:curseur hors fenêtre
    Par zentaf dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 15/11/2007, 15h10
  4. Peut-on déclarer un array dans un domaine ?
    Par colorid dans le forum SQL
    Réponses: 1
    Dernier message: 23/10/2007, 09h51
  5. [DB2] SQL dynamique pour déclarer un curseur
    Par Fatah93 dans le forum DB2
    Réponses: 3
    Dernier message: 12/12/2006, 13h06

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