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:
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 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; /
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
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; /
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".
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;
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.
Partager