Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

pl/sql spool EXECUTE IMMEDIATE

701887Jan 13 2012 — edited Jan 13 2012
Hi,
I would like to spool 7 different files in combination with execute immediate in one run. The script is


DECLARE
TELLER_1 INTEGER:=3;
ctt1 varchar(2000);
BEGIN
FOR TELLER_1 IN 3..10
LOOP
ctt1 := '
SPOOL ''F:\A1_W'||TELLER_1||'_KANS.TXT''
SELECT
WORP_XW || ''|''||
D || ''|''||
V5_AANTAL_KANS || ''|''||
V5_AVG_KANS || ''|''||
V6_AANTAL_KANS || ''|''||
V6_AVG_KANS || ''|''||
V7_AANTAL_KANS || ''|''||
V7_AVG_KANS || ''|''||
V8_AANTAL_KANS || ''|''||
V8_AVG_KANS || ''|''||
V9_AANTAL_KANS || ''|''||
V9_AVG_KANS
FROM
(
select WORP_XW,D, V5_AANTAL_KANS,ROUND(V5_AVG_KANS,6) V5_AVG_KANS, V6_AANTAL_KANS, ROUND(V6_AVG_KANS,6) V6_AVG_KANS,
V7_AANTAL_KANS,ROUND(V7_AVG_KANS,6) V7_AVG_KANS, V8_AANTAL_KANS, ROUND(V8_AVG_KANS,6) V8_AVG_KANS,
V9_AANTAL_KANS,ROUND(V9_AVG_KANS,6) V9_AVG_KANS
from
(
select WORP_XW,D, KANS,
case VERSIE_VX when ''V5''then 5 when ''V6''then 6 when ''V7''then 7 when ''V8''then 8 when ''V9'' then 9 end as VERSIE_VX
from VMENS.TOEVAL_BASIS_W'||TELLER_1||'

)
pivot (
AVG(KANS) as AVG_KANS,
COUNT(KANS) AS AANTAL_KANS
for VERSIE_VX IN( 5 as V5 , 6 as V6, 7 as V7, 8 as V8, 9 as V9 )
)
ORDER BY D
)';

EXECUTE IMMEDIATE ctt1;
dbms_output.put_line(ctt1);
END LOOP;
END;

when a run this script i've got error stement:

ORA-00900: Ongeldige SQL-statement.
ORA-06512: in row 42

row 42 is the row where the 'pivot (' starts.

When I run this script without the 'EXECUTE IMMEDIATE ctt1' statement then everything is oke.


SPOOL 'F:\A1_W3_KANS.TXT'
SELECT
WORP_XW || '|'||
D || '|'||
V5_AANTAL_KANS || '|'||
V5_AVG_KANS || '|'||
V6_AANTAL_KANS || '|'||
V6_AVG_KANS || '|'||
V7_AANTAL_KANS || '|'||
V7_AVG_KANS || '|'||
V8_AANTAL_KANS || '|'||
V8_AVG_KANS || '|'||
V9_AANTAL_KANS || '|'||
V9_AVG_KANS
FROM
(
select WORP_XW,D, V5_AANTAL_KANS,ROUND(V5_AVG_KANS,6) V5_AVG_KANS, V6_AANTAL_KANS, ROUND(V6_AVG_KANS,6) V6_AVG_KANS,
V7_AANTAL_KANS,ROUND(V7_AVG_KANS,6) V7_AVG_KANS, V8_AANTAL_KANS, ROUND(V8_AVG_KANS,6) V8_AVG_KANS,
V9_AANTAL_KANS,ROUND(V9_AVG_KANS,6) V9_AVG_KANS
from
(
select WORP_XW,D, KANS,
case VERSIE_VX when 'V5'then 5 when 'V6'then 6 when 'V7'then 7 when 'V8'then 8 when 'V9' then 9 end as VERSIE_VX
from VMENS.TOEVAL_BASIS_W3

)
pivot (
AVG(KANS) as AVG_KANS,
COUNT(KANS) AS AANTAL_KANS
for VERSIE_VX IN( 5 as V5 , 6 as V6, 7 as V7, 8 as V8, 9 as V9 )
)
ORDER BY D
);

Of course it's easy to run tis script 7 times. But i would like to understand the reason why this scripts give a error. Enybody Knows why?

Michiel van Mens
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Feb 10 2012
Added on Jan 13 2012
2 comments
3,319 views