home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.databases.oracle      Overblown overpriced overengineered SHIT      2,288 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 2,031 of 2,288   
   Frank van Bortel to mrique   
   Re: PL SQL Cursor beginner   
   09 Mar 05 19:30:53   
   
   From: fvanbortel@netscape.net   
      
   mrique wrote:   
   > Hi   
   > I'm beginning with PL SQL and try to learn cursors usage   
   > I get ora 920 with this  on line "WHERE WHERE_NORME "   
   > What i'm trying to do is to fetch where conditions stored in a table,   
   > and reuse it in dml order in my cursor.. but I must have missed   
   > somethin ? any pl sql killer having one minute for me ? thank's   
   >   
   > CREATE OR REPLACE PROCEDURE Feed_Anomalie AS   
   > CURSOR NORMES IS   
   > SELECT  ID_NORME, TABLE_NORME, WHERE_NORME FROM QTE_NORMES ORDER BY   
   > ID_NORME;   
   > ID_NORME QTE_NORMES.ID_NORME%TYPE;   
   > TABLE_NORME QTE_NORMES.TABLE_NORME%TYPE;   
   > WHERE_NORME QTE_NORMES.WHERE_NORME%TYPE;   
   >   
   > BEGIN   
   > OPEN NORMES;   
   >   
   > LOOP   
   > FETCH NORMES INTO ID_NORME , TABLE_NORME , WHERE_NORME ;   
   > EXIT WHEN NORMES%NOTFOUND;   
   > INSERT INTO QTE_ENREGISTREMENT_NC   
   > (NUM_DOSS, DATE_NC, LAST_DATE_NC, REF_NORME)   
   > SELECT DISTINCT CLE_DOSS, SYSDATE, SYSDATE, ID_NORME   
   > FROM (   
   > SELECT   
   > DOSSIER.CLE_DOSS, SYSDATE, SYSDATE, ID_NORME   
   > FROM TABLE_NORME   
   > WHERE WHERE_NORME   
   > MINUS   
   > SELECT QTE_ENREGISTREMENT_NC.NUM_DOSS , SYSDATE, SYSDATE, ID_NORME   
   > FROM QTE_ENREGISTREMENT_NC  );   
   >   
   >   
   > END LOOP;   
   > CLOSE NORMES;   
   > END;   
   > /   
      
   You cannot build a where clause like this; you   
   need dynamic sql, e.g.   
   execute immediate ('QTE_ENREGISTREMENT_NC   
   (NUM_DOSS, DATE_NC, LAST_DATE_NC, REF_NORME)   
   SELECT DISTINCT CLE_DOSS, SYSDATE, SYSDATE, ID_NORME   
   FROM (   
   SELECT   
   DOSSIER.CLE_DOSS, SYSDATE, SYSDATE, ID_NORME   
   FROM TABLE_NORME   
   WHERE :W ' using where_norme;   
      
   Due to the overhead in parsing, etc, this is not   
   a way of coding I would advocate   
   --   
   Regards,   
   Frank van Bortel   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca