dbTalk Databases Forums  

PL SQL Cursor beginner

comp.databases.oracle comp.databases.oracle


Discuss PL SQL Cursor beginner in the comp.databases.oracle forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
mrique
 
Posts: n/a

Default PL SQL Cursor beginner - 03-09-2005 , 11:17 AM






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;
/

Reply With Quote
  #2  
Old   
Frank van Bortel
 
Posts: n/a

Default Re: PL SQL Cursor beginner - 03-09-2005 , 12:30 PM






mrique wrote:
Quote:
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


Reply With Quote
  #3  
Old   
mrique
 
Posts: n/a

Default Re: PL SQL Cursor beginner - 03-12-2005 , 08:17 AM



thank you I did not know about dynamique sql so I found some tutorial and will learn

Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.3
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.