| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.misc -> Re: How to display MIN/MAX values in a cursor
"Bruce" <someone_at_nc.rr.com> wrote:
> It's a little known bug (gasp.. did I say that?) in Oracle. MIN or MAX of a
> CHAR() field will return a 4000 character data when used in a cursor like
> this. The problem is "solved" by upgrading to a 9i version. To verify this,
> change your DBMS_OUTPUT to LENGTH() and you'll see it. This appears to only
> happen in a cursor as this SELECT in SqlNAV or TOAD will show the 6
> character MIN and MAX values without all the spaces padded on.
Apparently that was it. I used LENGTH() in the DBMS_OUTPUT statements and it returned 8003(!), so I used TRIM and now it works fine. Thanks for the help!
BEGIN
DECLARE
CURSOR rcpt_num_cur IS
SELECT SUBSTR(receipt_number, 1, 1) init,
MIN(receipt_number)
min_num,
MAX(receipt_number) max_num
FROM remitter
WHERE SUBSTR(receipt_number, 1, 1) IN ('A', 'D', 'E', 'N')
GROUP BY SUBSTR(receipt_number, 1, 1);
BEGIN
FOR v_rcpt_num IN rcpt_num_cur LOOP
DBMS_OUTPUT.put(v_rcpt_num.init || ' ');
DBMS_OUTPUT.put(TRIM( ' ' FROM v_rcpt_num.min_num) || ' ');
DBMS_OUTPUT.put_line(TRIM( ' ' FROM v_rcpt_num.max_num));
END LOOP;
-- ====================================================================== ISLAM: Winning the hearts and minds of the world, one bomb at a time.Received on Wed Oct 20 2004 - 10:54:06 CDT
![]() |
![]() |