[oracle] Expression du mauvais type

Expression du mauvais type [oracle] - SQL/NoSQL - Programmation

Marsh Posté le 06-02-2006 à 10:11:35    

Bonjour,
je travaille avec le SGBD Oracle et j'ai une erreur que je comprend pas...
J'ai une procédure avec une requête comme celle-ci :
 

[fixed]/**********************************************************************************
--* PROCEDURE : PRC_SEL_PROD
--* -------------------------------------------------------------------------------
--*
--* PARAMETRE :
--* RETOURNE  :
--* DESCRIPTION :selectionne les produit de catalogue franco, hors catalogue franco
/**********************************************************************************/
PROCEDURE PRC_SEL_PROD(PRODCursor IN OUT PRODCur,sChoixcat IN VARCHAR2,Choix IN VARCHAR2) IS
BEGIN
 IF Choix = '1' THEN /*produits hors catalogue franco*/
  OPEN PRODCursor FOR
SELECT c.cla_cod, c.cla_nom, f.famille_cod, f.famille_nom,  
                p.prd_cod, p.prd_nom,p.prd_lon, p.prd_lar,sf.famille_cod ,sf.sfamille_cod, sf.sfamille_nom  
        FROM cla c  ,famille f, sfamille sf, prde pr,  prd p, catprde ca  
  WHERE f.cla_cod   = c.cla_cod  
              AND sf.famille_cod  = f.famille_cod  
     AND pr.sfamille_cod  = sf.sfamille_cod  
     AND p.prd_cod = pr.prd_cod  
              AND ca.prd_cod = pr.prd_cod  
     AND ca.catprde_iac = 'O'
              AND ca.cat_cod =  SChoixCat
        ORDER BY c.cla_tri ,f.famille_tri,sf.sfamille_tri,pr.prde_tri, p.prd_cod, p.prd_nom;fixed]


l'erreur qui m'apparait est : expression du mavais type sur le select ... je comprend trop trop si quelqu'un pouvait eclairer ma lanterne je lui en serait eternellement reconaissante.
Mirki


Message édité par DeadStar le 06-02-2006 à 10:12:41
Reply

Marsh Posté le 06-02-2006 à 10:11:35   

Reply

Marsh Posté le 06-02-2006 à 11:20:36    

ca serait pas par rapport a mon cursor ? faudrait il que je le ferme ??

Reply

Marsh Posté le 06-02-2006 à 12:33:47    

heu!! mais je te connais toi ;-)

Reply

Marsh Posté le 06-02-2006 à 13:08:10    

super réponse la mouche....ZZzzz !

Reply

Marsh Posté le 06-02-2006 à 13:46:06    

Ou sinon ca bloque dans la declaration de mon cursor ... s'il vous plait help !

Reply

Marsh Posté le 06-02-2006 à 14:24:53    

c'est quoi ce curseur en paramétre ?

Reply

Marsh Posté le 06-02-2006 à 14:51:41    

le cursor en parametre c'est :
 

-----------------------------------------------------------------------
-- Cursor utilisé dans  PRC_SEL_PROD
-----------------------------------------------------------------------
 Cursor Cur9 IS
   SELECT   c.cla_cod, c.cla_nom, f.famille_cod, f.famille_nom, p.prd_cod, p.prd_nom,p.prd_lon, p.prd_lar, pr.cdt_cod, pr.lievte_cod, l.lievte_nom, sf.sfamille_cod, sf.sfamille_nom
            FROM    cla c, famille f, sfamille sf, prdlie pr, prd p, lievte l, prde pe, catprde cp, catprdlie ca, cdt cd ;
      TYPE PRODCur IS REF CURSOR RETURN Cur9%ROWTYPE;


 
je me suis dit que peut etre l'erreur venait du select parceque j'ai pas rentré tous les noms de champs.. mais quand je veux les rajouter dans le select ca marche pas parcequ'il y a deja des noms qui y ressemblent..
 
oula je sens que je vais t'embrouiller la non ?

Reply

Marsh Posté le 06-02-2006 à 15:26:36    

REF CURSOR est un pointeur vers le curseur Cur9, en aucun cas tu ne peux l'ouvrir dans une autre procédure :/
 
Tu devrais vérifier l'utilisation des REF CURSOR mais là ça ne me parait pas correcte. C'est plutôt une boucle FORALL que tu dois utiliser je pense.  
 
Apparemment, il y a des exemples ici : http://sheikyerbouti.developpez.com/pl_sql/?page=Chap1

Reply

Marsh Posté le 06-02-2006 à 15:56:24    

Mirki OraFrance !! ^^
De mon coté je viens de m'apercevoir qu'il y avit un problème aussi dans mon select regarde je pense que ca peut venir de ca :
 
-> Select du cursor :
Mirki OraFrance !! ^^
De mon coté je viens de m'apercevoir qu'il y avit un problème aussi dans mon select regarde je pense que ca peut venir de ca :
 
-> Select du cursor :

Code :
  1. SELECT c.cla_cod, c.cla_nom, f.famille_cod, f.famille_nom, p.prd_cod, p.prd_nom,p.prd_lon, p.prd_lar, sf.sfamille_cod, sf.sfamille_nom,pr.cdt_cod, pr.lievte_cod, l.lievte_nom


-> et le Select de ma procédure :

Code :
  1. SELECT c.cla_cod, c.cla_nom, f.famille_cod, f.famille_nom, p.prd_cod, p.prd_nom, p.prd_lon,
  2.         p.prd_lar, sf.famille_cod, sf.sfamille_nom


le truc c'est que ce cursor est utiliser dans la procédure par plusieurs requetes et que je ne peux donc pas enlever pr.cdt_cod, pr.lievte_cod, l.lievte_nom ... :sweat:  
 
je sais po trop comment faire ! je vais bucher ton FORALL

Reply

Marsh Posté le 06-02-2006 à 16:56:56    

c'est bon c'est pas grave j'ai mis dans mes requetes les champs en trop (tampis si je les utilises pas)  
sinon si ta une autre soluce je veux bien l'entendre =)
Merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed