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

Accès aux données Discussion :

appel d'une procédure stocké en asp.net


Sujet :

Accès aux données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Par défaut appel d'une procédure stocké en asp.net
    bonjour;
    comment pui-je appeler cette procédure en asp.net:

    create procedure recherche
    (
    titre IN varchar,resultat OUT cv%Rowtype

    )
    is

    BEGIN
    SELECT * INTO resultat FROM touhami.cv
    WHERE metier LIKE titre ;
    end;

    le probleme est lors de l'appel avec la variable resultat de type cv%rowtype
    sinon j'appelle commeca et sa fonctionne

    MonParametre2 = MaCommande.Parameters.Add("resultat", OleDbType.VarChar, 20)

    MonParametre2.Direction = ParameterDirection.Output

  2. #2
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    et la balise code?

    ensuite, tu dis que tu fais "comme ca" et que ca marche alors quel est ton problème?

  3. #3
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Par défaut
    mon sa marche quand je declare la variable resultat dans ma procédure stocké comme etant varchar

    mais ma variable resultat dans la procédure et de type cv%rowtype

    comment je vai faire l'appel dans mon code avec ce type la

  4. #4
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    pourquoi utilises-tu "OleDbType". n'as-tu pas un provider plus spécialisé pour ton SGBD? oledb ne s'utilise qu'en dernier recours normalement.

    ensuite tu donnes aucune info sur le type de base. tu serais en oracle par exemple, tu pourrais utiliser un refcursor plutot que rowtype

  5. #5
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Par défaut
    j'utilise oracle 9i

    jai essayé avec un ref cursor mais j'ai aucun resultat

    voici mon code de procédure

    create or replace procedure P_listeproduit (titre in varchar,resultat out varchar) is

    cursor c_listeprod is
    select objectif from touhami.cv where metier like titre;



    begin
    -- Ouverture du curseur
    open c_listeprod;

    -- Début Boucle
    loop
    -- Rapatriement de l'enregistrement du curseur
    fetch c_listeprod into resultat;

    -- Test de fin du curseur avec sortie de boucle
    if c_listeprod %notfound then
    exit;
    end if;

    -- Test du curseur
    dbms_output.put_line(resultat);

    --Fin Boucle
    end loop;

    -- Fermeture du curseur
    close c_listeprod;
    end;

  6. #6
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    quand tu tapes un message, merci d'utiliser le bouton avec le dièse dessus et de mettre ton code dedans


    ensuite, ca ne s'utilise pas comme cela en oracle si tu veux retourner un resultset (note: y a que oracle qui fait ch**r comme ca )
    Il te faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    create or replace procedure P_listeproduit (titre in varchar,resultat out refcursor) is
    begin
      OPEN resultat FOR
          SELECT * FROM matable;
     
    end;
    c'est tout.

    ensuite, la subtilité c'est que ExecuteQuery ou non query ou autre ne te retournera jamais rien.

    il faut recupérer depuis .Net la value de ton paramètre. cad tu crées un paramètre, tu le set à null, tu le passe à ta sp, tu execute la sp qui ne fait que modifier cet "objet" puis tu reprend cet objet et tu l'utilises.

    moi je fais comme cela (j'utilise ma propre DAL donc tu n'auras pas exactement la même chose mais ma DAL n'est qu'une surcouche des objets oracle donc tu peux pareil)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    dbManager.Open();
                    dbManager.CreateParameters(3);
                    dbManager.AddOracleParameters(0, "cur", "cursor", null); // il faut le setter à null
                    dbManager.AddOracleParameters(1, "p_usr", "number", UsrID);
                    dbManager.AddOracleParameters(2, "p_filename", "nvarchar", alertFile);
                    dbManager.Parameters[0].Direction = ParameterDirection.Output;
                    dbManager.ExecuteNonQuery(CommandType.StoredProcedure, "pkg_alerts.sp_getalertforexo");
    
                    dbManager.DataReader = (IDataReader)dbManager.Parameters[0].Value; // je te le récupère
                    return dbManager.getDataReaderDataTable(); // avec le datareader, tu fais ce que tu veux, ici je récupère un objet DataTable

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 11/11/2014, 09h45
  2. Réponses: 1
    Dernier message: 03/09/2009, 12h39
  3. Réponses: 6
    Dernier message: 19/07/2007, 16h48
  4. Réponses: 2
    Dernier message: 10/12/2004, 15h43
  5. Appel d'une procédure stockée par un vbscript
    Par NicoNours dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/10/2004, 13h53

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