RE: PL/SQL differences between Solaris & Linux

From: William Wagman <wjwagman_at_ucdavis.edu>
Date: Wed, 23 Jul 2008 17:11:02 -0700
Message-ID: <FE043305B38A0F448F3924429D650C2A08507C25@VEXBE2.ex.ad3.ucdavis.edu>


William,

Thanks for the response. Thankfully, I can't take credit for the code. A bug or some other glitch is the only thing I can think of as the docs clearly state you can't do that. Oh well, perhaps another of life's mysteries.

Thank you.

Bill Wagman
Univ. of California at Davis
IET Campus Data Center
wjwagman_at_ucdavis.edu
(530) 754-6208

-----Original Message-----
From: oracle-l-bounce_at_freelists.org
[mailto:oracle-l-bounce_at_freelists.org] On Behalf Of William Robertson Sent: Wednesday, July 23, 2008 3:39 PM
To: oracle-l
Subject: Re: PL/SQL differences between Solaris & Linux

If the gods are angry, my guess it's at the redundant SELECT FROM DUAL and the way you duplicate the error code. What on Earth is the purpose of that? Is an ORA-01555 error greatly improved by logging it as "-1555:

ORA-01555"? Regarding the different behaviour, I'm afraid I have no idea, looks like

a bug crept in on the Solaris version, or the fix crept in on the Linux one. Why the restriction is there in the first place I'll also never know.

-----Original message-----
From: William Wagman
Date: 23/7/08 19:29
> Greetings,
>
> We are in the process of moving our 9.2.0.8.0 EE database from Solaris
> SunOS 5.8 Generic_117350-54 sun4u sparc SUNW,Sun-Fire-480R to Linux
> 2.6.9-67.0.15.ELsmp #1 SMP Tue Apr 22 13:58:43 EDT 2008 x86_64 x86_64
> x86_64 GNU/Linux and have found an issue with some PL/SQL code. The
> following PL/SQL code segment (if the entire procedure would help,
it's
> only 100 lines, let me know) compiled successfully on Solaris...
>
> EXCEPTION
> WHEN OTHERS
> THEN
> SELECT ucd.log_seq.NEXTVAL
> INTO v_error_row
> FROM DUAL;
>
> INSERT INTO ucd.LOG
> VALUES (v_error_row, 'APS', 'CARD_SERVICE_FIX',
'PROCEDURE',
> 'ERROR', SQLCODE || ': ' || SQLERRM || '.',
SYSDATE);
>
> This code on linux generated the error
> PL/SQL: ORA-00984: column not allowed here
> Which is to be expected (I guess) as I this is apparently not
supported
> with SQLCODE and SQLERRM and I had to make the following changes...
>
> v_error_string VARCHAR2 (4000);
> .
> .
> EXCEPTION
> WHEN OTHERS
> THEN
> v_error_string := SQLCODE || ': ' || SQLERRM || '.';
> SELECT ucd.log_seq.NEXTVAL
> INTO v_error_row
> FROM DUAL;
>
> INSERT INTO ucd.LOG
> VALUES (v_error_row, 'APS', 'CARD_SERVICE_FIX',
'PROCEDURE',
> 'ERROR', v_error_string, SYSDATE);
>
> Can anyone explain why this worked on Solaris but not on linux
> (disclaimer: I didn't write the code). Is there something else I may
not
> be aware of going on, is it an artifact of something else, are there
> differences between solaris and linux in this regard or are the gods
> just angry at me for other transgressions?
>
>
>
>
>

--
http://www.freelists.org/webpage/oracle-l


--
http://www.freelists.org/webpage/oracle-l
Received on Wed Jul 23 2008 - 19:11:02 CDT

Original text of this message