Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.misc -> Re: Reporting with dynamic sql
DA Morgan wrote:
> Deltones wrote:
> > Hi all,
> >
> > Newbie here. I've searched this newsgroup but couldn't put my finger on
> > what I was looking for. Is it possible to mix dynamic sql with SQL*Plus
> > reporting ability without having to "dbms_output" every line of the
> > report? Basically, here's what I mean in the sample code below:
> >
> > ------
> >
> > variable vTimeStamp char(6);
> >
> > BEGIN
> >
> > select to_char(sysdate, 'hhmiss') into :vTimeStamp from dual;
> >
> > execute immediate 'create table tmp_dummy_&&4' || '_'
> > || :vTimeStamp || ' (f_dummy varchar2(6))';
> >
> > END;
> > /
> >
> > ttitle left "XXXXXXXXX" CENTER "THIS IS A TEST"-
> > skip 1 " TEST " skip 2
> >
> > col aa format a6 heading 'Test'
> >
> > BEGIN
> > execute immediate 'SELECT f_dummy aa FROM tmp_dummy_&&4' || '_' ||
> > :vTimeStamp;
> > END;
> > /
> >
> > exit;
> >
> > -----
> >
> > It runs, but I don't get any report results. But if I put the "SELECT"
> > statement outside the BEGIN / END, I get the results I want. Take note
> > that the name of the table is entered in full when I do this. I know
> > the table name for my test. But the real program will have table names
> > with the kind of construction you see above.
> >
> > You have a way to make this work as above or I really need to
> > "dbms_output" everything between a BEGIN / END duo?
> >
> > Regards,
> >
> > Denis
>
>
>
DA,
You're right as far as INSERT is concerned, but I do have one row inserted for my tests. What's above is just the basic idea behind the larger program. As for creating table on the fly, well, that's the way the program I have to modify was done. One of the thing I'm asked to do is add the timestamp to the filename to correct a situation that happens in production with doubling of results when two users execute the program at the same time. The real temp table created is much larger than just one field and is fed from a pretty long query. Like I said, what's above is the general idea of what I need to do.
But in a way, you answered my question. It looks like dynamic sql and SQL*Plus report capabilities don't mix very well. Received on Wed Aug 16 2006 - 07:09:01 CDT
![]() |
![]() |