Re: IS and AS
From: Frank van Bortel <frank.van.bortel_at_gmail.com>
Date: Thu, 22 Jan 2009 11:13:46 +0100
Message-ID: <ec775$497846da$524b5c40$5715_at_cache6.tilbu1.nb.home.nl>
>>> I was wondering what is the difference between IS and AS, in general
>>> PL/SQL code.
>>>
>>>
>>> For instance of FUNCTION book_t, how can oracle know if keyword ending
>>> the header is IS or AS;
>>> I mean if header returns SELF and declare result variable before BEGIN,
>>> or if header returns SELF AS RESULT and declare nothing before BEGIN.
>>>
>>>
>>> CREATE OR REPLACE TYPE BODY book_t
>>> AS
>>> CONSTRUCTOR FUNCTION book_t (id IN INTEGER,
>>> title IN VARCHAR2,
>>> isbn IN VARCHAR2,
>>> pages IN INTEGER)
>>> RETURN SELF AS RESULT
>>> IS
>>> BEGIN
>>> SELF.id := id;
>>> SELF.title := title;
>>> SELF.isbn := isbn;
>>> SELF.pages := pages;
>>> IF isbn IS NULL OR SELF.ck_digit_okay
>>> THEN
>>> RETURN;
>>> ELSE
>>> RAISE_APPLICATION_ERROR(-20000, 'ISBN ' || isbn
>>> || ' has bad check digit');
>>> END IF;
>>> END;
>>> ...
http://download.oracle.com/docs/cd/A91202_01/901_doc/server.901/a90125/statements_82.htm#2064465
Date: Thu, 22 Jan 2009 11:13:46 +0100
Message-ID: <ec775$497846da$524b5c40$5715_at_cache6.tilbu1.nb.home.nl>
O_TEXT wrote:
> Shakespeare a écrit : >> O_TEXT schreef:
>>> I was wondering what is the difference between IS and AS, in general
>>> PL/SQL code.
>>>
>>>
>>> For instance of FUNCTION book_t, how can oracle know if keyword ending
>>> the header is IS or AS;
>>> I mean if header returns SELF and declare result variable before BEGIN,
>>> or if header returns SELF AS RESULT and declare nothing before BEGIN.
>>>
>>>
>>> CREATE OR REPLACE TYPE BODY book_t
>>> AS
>>> CONSTRUCTOR FUNCTION book_t (id IN INTEGER,
>>> title IN VARCHAR2,
>>> isbn IN VARCHAR2,
>>> pages IN INTEGER)
>>> RETURN SELF AS RESULT
>>> IS
>>> BEGIN
>>> SELF.id := id;
>>> SELF.title := title;
>>> SELF.isbn := isbn;
>>> SELF.pages := pages;
>>> IF isbn IS NULL OR SELF.ck_digit_okay
>>> THEN
>>> RETURN;
>>> ELSE
>>> RAISE_APPLICATION_ERROR(-20000, 'ISBN ' || isbn
>>> || ' has bad check digit');
>>> END IF;
>>> END;
>>> ...
>> It's all a matter of parsing.... >> >> Shakespeare >> >> BTW: in many cases, AS and IS are interchangeable. > > Is it possible to know on which rule PLSQL is based for parsing? > > >
http://download.oracle.com/docs/cd/A91202_01/901_doc/server.901/a90125/statements_82.htm#2064465
as|is clause, meaning it is interchangeable. Works for all SQL create statements, afaik.
-- Regards, Frank van BortelReceived on Thu Jan 22 2009 - 11:13:46 CET