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 :

Curseur en entrée


Sujet :

PL/SQL Oracle

  1. #1
    Membre éclairé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Par défaut Curseur en entrée
    Bonjour
    la procédure qui suit doit recevoir un curseur en entrée et le stoker dans une table Personne.
    Le problème est comme le déclarer le curseur "grd_cur" puis-ce que je le reçois à partir d'une grille de visuel studio.




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    create table Personne
    (
      FIRST_NAME VARCHAR2(250),
      LAST_NAME  VARCHAR2(250),
      COMPANY    VARCHAR2(250)
    )

    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
      type tcur is ref cursor;
    
     procedure so_p_save_Personne(grd_cur  in tcur)is  
     
     v_first_name varchar2(250);
     v_last_name  varchar2(250);
     v_company  varchar2(250);
     begin
     open grd_cur;
     loop
     fetch grd_cur into a,b,c ;
    
     insert into tester
       (first_name, last_name, company)
     values
       (v_first_name, v_last_name, v_company);
     
     exit when grd_cur%notfound;
      end loop;
    --on exception rollback;
     commit;
    
     end;

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Octobre 2008
    Messages : 8
    Par défaut
    Bonjour,

    ce que je ne comprend pas, est-ce que tu es obligé de passer le curseur comme paramétre dans la procédure?

    tu peux le décalrer normalement à l'intérieur de la procédure et ça marche.

  3. #3
    Membre éclairé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Par défaut
    oui je suis obligé de faire ainsi malheureusement.

    ainsi la procedure précédente ne compile pas j'ai l'erreur suivante
    " Expression de mauvais Type ".

  4. #4
    Expert confirmé 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
    Par défaut
    Déclarez le paramètre "grd_cur" comme étant de type "sys_refcursor".
    PS. Le code posté est erroné les variables a, b, c ne sont pas déclarées.

  5. #5
    Membre éclairé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Par défaut
    merci
    j'ai l'erreur suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Error: PLS-00201: l'identificateur 'SYS_REFCURSOR' doit être déclaré
    Line: 3
    oracle 8i.

  6. #6
    Expert confirmé 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
    Par défaut
    Citation Envoyé par Jcpan Voir le message
    merci
    j'ai l'erreur suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Error: PLS-00201: l'identificateur 'SYS_REFCURSOR' doit être déclaré
    Line: 3
    oracle 8i.
    En 8i sys_refcursor n'existe pas. Il faut créer le type curseur dans un package.
    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
     
    CREATE OR REPLACE PACKAGE cv_types AS
       TYPE GenericCurTyp IS REF CURSOR;
    END cv_types;
    /
    CREATE OR REPLACE PROCEDURE BUILD_DW_PR
    (
      p_instruction varchar2,
      IO_CUR IN OUT cv_types.GenericCurTyp
    )
    IS
     
    BEGIN
      OPEN IO_CUR FOR p_instruction;
    END BUILD_DW_PR;
    /

  7. #7
    Membre éclairé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Par défaut
    le curseur IO_CUR est une grille est remplis de donné.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OPEN IO_CUR FOR p_instruction;
    je ne sélectionne de null part

  8. #8
    Expert confirmé 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
    Par défaut
    Citation Envoyé par Jcpan Voir le message
    le curseur IO_CUR est une grille est remplis de donné.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OPEN IO_CUR FOR p_instruction;
    je ne sélectionne de null part
    C'est un exemple d'utilisation du type cv_types.GenericCurTyp. En fait vous devez créer le package et utiliser ce type à la place du "type tcur is ref cursor"

Discussions similaires

  1. pl/sql curseur update entre deux tables
    Par Fiona08 dans le forum PL/SQL
    Réponses: 7
    Dernier message: 27/11/2010, 01h14
  2. Compromis entre select et curseur
    Par maamar1979 dans le forum Firebird
    Réponses: 4
    Dernier message: 29/12/2007, 08h18
  3. Curseur en entrée ?
    Par Akanath dans le forum C#
    Réponses: 4
    Dernier message: 12/11/2007, 16h32
  4. Réponses: 3
    Dernier message: 08/06/2007, 14h16
  5. Modification curseur avec texte entré dans 1 textfield
    Par taillooo dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 14/02/2006, 14h14

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