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

Bases de données Delphi Discussion :

Travailler avec des paramètres complexes


Sujet :

Bases de données Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Travailler avec des paramètres complexes
    Bonjour,

    Voilà mon problème:
    Je suis dans une config D5 BDE ORACLE10g avec un client OCI 8.
    De ce fait je ne peut pas utiliser les type Objet de côte ORACLE.
    Je sais que le %rowtype en paramètre ne sont pas compris par les clients D5 en BDE.

    J'ai la procédure suivante:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE OR REPLACE procedure AXEP.TESTA(a pkg_def_types.at_param_proc, cr OUT SYS_REFCURSOR) is
         j tme_dir_produit.i_dir_produit%type;
         r PLS_INTEGER; 
    begin
        r:=a(1).GETCHAR(j);
        open cr for select t.* from tme_dir_produit t where t.i_dir_produit = j;
    end;
    /
    dont les types sont définis comme suit:
    Code SQL : 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
    CREATE OR REPLACE PACKAGE AXEP.PKG_DEF_TYPES AS
    /******************************************************************************
       NAME:       PKG_DEF_TYPES
       PURPOSE:
     
       REVISIONS:
       Ver        Date        Author           Description
       ---------  ----------  ---------------  ------------------------------------
       1.0        08/11/2007             1. Created this package.
    ******************************************************************************/
     
       type rt_dir_produit is Record ( I_DIR_PRODUIT tme_dir_produit.I_DIR_PRODUIT%type,
                                       L_DIR_PRODUIT tme_dir_produit.L_DIR_PRODUIT%type);
     
       Subtype trt_dir_produit is tme_dir_produit%rowtype;
     
       type at_param_proc is Varray(2) of ANYDATA;
     
    END PKG_DEF_TYPES;
    /
    et j'ai réussi à faire la récupèration du curseur sous TQuery de la manière suivante:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    BEGIN
         TESTA( pkg_def_types.at_param_proc( AnyData.ConvertChar( :I_DIR_PRODUIT ), 
                                             AnyData.ConvertChar( :L_DIR_PRODUIT ) ) , :Result ); 
    END;
    Maintenant j'aurai besoin de lancer cette proc avec TStoredProc et je ne sais pas comment traiter le paramètre a car chaque fois que j'appelle la proc ave a en ftArray j'obtiens "Opération non applicable".

    Remarque:Je ne peut pas utiliser autre chose que les composants BDE par défaut.

    A-t-il quelqu'un une idée ou une alternative a cette méthode ?

    Cordialement.

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 76
    Points : 67
    Points
    67
    Par défaut
    j’obtiens "Opération non applicable".
    Cette erreur est due car tu as exécuté ton code ainssi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StoredProc1.Active:=true;
    éssaye ça :
    Explication :
    Quand on veut exécuter une procédure qui ne retourne pas d'enregistrement donc une exécution unidirectionnel on utilise le Execproc, par contre quand la procédure ou la requête représente une vue des données donc l'exécution est bidirectionnel en utilise la propriété d’activation (active:=true)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut


    Merci pour ta réponse Sofiane mais en fait la procédure doit retourner le courseur cr. Mon problème est que je souhaite envoyer le paramètre a d'un "seul coup" en appelant une TStoredProc.
    En version TQuery ça marche mais je me doit d'envoyer le paramètre a par "morceaux", situation que je cherche à éviter.

    Chaleureusement,
    Michel

Discussions similaires

  1. Travailler avec des nombres complexes
    Par manueld dans le forum Langage
    Réponses: 2
    Dernier message: 17/08/2010, 01h55
  2. [ADO/Access] Appel d’une requête avec des paramètres
    Par Taxenna dans le forum Bases de données
    Réponses: 1
    Dernier message: 07/12/2004, 14h58
  3. Erreur sur une fonction avec des paramètres
    Par Elois dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 05/05/2004, 21h00
  4. Travailler avec des bits
    Par Vulvulune dans le forum Langage
    Réponses: 5
    Dernier message: 02/03/2003, 19h09
  5. créer un noeuds avec des paramétres
    Par Toxine77 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 21/01/2003, 16h11

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