Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> Re: create table issue

Re: create table issue

From: Onkar N Tiwary <onkarnath.tiwary_at_gmail.com>
Date: Wed, 29 Jun 2005 12:57:12 +0530
Message-ID: <a144e5210506290027384920f3@mail.gmail.com>


Superb explanation Carel,
 Ur explaination with example cleared all my doubts in this regards.  Thanx once again

 On 6/29/05, Carel-Jan Engel <cjpengel.dbalert_at_xs4all.nl> wrote:
>
> You won't, but you probably don't need to.
>
> To explain, you need some background about how a compiler/parser works.
> There are roughly two parts involved in analyzing the text of the statement.
> The first part is the lexical analyzer. This will identify strings of
> characters as individual tokens. There are a lot of different tokens. You
> have the reserved words, numbers, braces, and so on. Tokens can be just the
> token on its own, an internal representation used by lexical analyzer and
> parser, or can be accomanied by a value, which is the case for e.g.
> numbers and strings. After lexical analysis, the parser well get handed over
> the token from the lexical aqalyzer.
> Take the next statement for example:
>
> CREATE TABLE XYZ(SR INTEGER);
> The tokens are:
> CREATE
> TABLE
> STRING "XYZ"
> BRACE_OPEN
> STRING "SR"
> INTEGER
> BRACE_CLOSE
> SEMICOLON
>
> Every known ("RESERVED") word will be translated in an internal
> representation of a token. In this example XYZ and SR are unknown words, and
> will therefor be transferred as STRING token to the parser. A STRING token
> is accompanied with a value, "XYZ" or "SR" and this example. The parser will
> then check the syntax to find out whether a string is appropriate on that
> location in the statement. In this case the strings are OK: they represent
> the table name and column name.
>
> Now your example:
>
> CREATE TABLE "TEST"(SR INTEGER);
>
> The tokens are:
> CREATE
> TABLE
> STRING "TEST"
> BRACE_OPEN
> STRING "SR"
> INTEGER
> BRACE_CLOSE
> SEMICOLON
>
> Normally, if "TEST" wouldn't have been enclosed the lexical analyzer will
> hand over the representation for the token TEST to the parser. The effect of
> enclosing TEST in quotes will be that the lexical analyzer sees the token
> STRING, with a value of "TEST". This is OK for the parser, and it will enter
> that string as a table name in the data dictionary.
>
>
> As you may see in the examples above, after the lexical analysis there is
> no difference left in the treatment of "TEST" and "XYZ". Surrounding a
> reserved word with quotes just prevents the lexical analyzer from
> recognizing the reserved word. It will be treated as any other STRING.
>
> In the datadictionary you will not find any sign of the quotes. They have
> been lost during the lexical analysis phase already.
>
> HTH.
>
> Best regards,
>
> Carel-Jan Engel
>
> ===
> If you think education is expensive, try ignorance. (Derek Bok)
> ===
> On Wed, 2005-06-29 at 07:41, Onkar N Tiwary wrote:
>
> *Hi Peter,
>
> Nice method I must say. But what if a table has been created like this :
>
> CREATE TABLE "TEST"(SR INTEGER);
>
> In this case the table name is not the reserved word then how will one
> identify this table as different from other tables created with normal
> CREATE TABLE TEST(.....) command???
>
>
> On 6/28/05, **Peter.Hitchman_at_thomson.com* <Peter.Hitchman_at_thomson.com> <*
> Peter.Hitchman_at_thomson.com* <Peter.Hitchman_at_thomson.com>> wrote:
>
> Hi,
> There is a view v$reserved_words that lists all of the reserved words. So
> you could use that to find tables/indexes etc created by surrounding the
> identifier in double quotes.
> So I just tried it:-
>
> create table "InserT" ( dummy char(1));
>
> select owner, table_name
> from dba_tables d, v$reserved_words w
> where upper(keyword) = upper(table_name)
>
>
> ---> OWNER TABLE_NAME
> --------------- -----------------------------------
> OPS$PHITCHMA InserT
>
> 1 row selected.
>
> Regards
>
> Pete
>
>
> -----Original Message-----
> *From:* *oracle-l-bounce_at_freelists.org* <oracle-l-bounce_at_freelists.org>[mailto:
> *oracle-l-bounce_at_freelists.org* <oracle-l-bounce_at_freelists.org>]*On Behalf
> Of *Onkar N Tiwary
> *Sent:* 28 June 2005 14:16
> *To:* Giovanni Cuccu
> *Cc:* *oracle-l_at_freelists.org* <oracle-l_at_freelists.org>
> *Subject:* Re: create table issue
>
>
> hi Giovanni,
>
> Thanx for the reply. But u know my main doubt is how to find such object
> created using quotes. It must be recognised differently by oracle shand
> there ould be entry for such object. If I am not wrong. I am trying to find
> that method where in we can find such objects created using quotes.
>
>
> On 6/28/05, *Giovanni Cuccu* <*giovanni.cuccu_at_gmail.com*<giovanni.cuccu_at_gmail.com>>
> wrote:
>
> Hi,
> I'm not a guru so my answer may be incorrect but I believe that
> Oracle implicitly use the uppercase name of your item (table, but also
> column, etc) when try to reference it. If you want to give an item a
> "particular" name (as oracle 10g does with tables in the recyclebin)
> you must enclose it with duble quotes; this indicates that the name
> should be taken as you typed it. You can find all the names (in the
> form required by Oracle for checking their existence) in the
> corresponding data_dictionary view (dba_tables for examples).
> Hope this helps,
> Giovanni
>
>
> On 6/28/05, Onkar N Tiwary <
>
> *onkarnath.tiwary_at_gmail.com* <onkarnath.tiwary_at_gmail.com>> wrote:
> > Hi gurus,
> >
> > Normally oracle says we can not create tables using the keywords but
> when
> > one issues CREATE TABLE "INSERT" (col datatype);", it gets created. It
> can
> > always be referenced and other tasks can be done easily on the table but
> the
> > table name must always be in double quotes. My question is how oracle
> > identifies these tables and where does makes the entry of such tables
> for
> > regonising? If I don know about this double quotes and the table has
> been
> > created using double quotes then how to find such objects and from
> > where?????
> >
> >
> > --
> > Thanks & Regards,
> > T. Onkar Nath
> > Ph : +91-9826728111(Cell)
> > *to_onkar_at_yahoo.com* <to_onkar_at_yahoo.com>
> > *onkarnath.tiwary_at_gmail.com* <onkarnath.tiwary_at_gmail.com>
> >
>
>
> --
> --------------------------------------------------------------------
> Another free oracle resource profiler
> *http://sourceforge.net/projects/oraresprof/*<http://sourceforge.net/projects/oraresprof/>
> New version 0.8 with many bug fixes
> and warnings on file truncated, timed_statistics=false, incorrect
> tracing deactivation and more
>
>
>
>
> --
> Thanks & Regards,
> T. Onkar Nath
> Ph : +91-9826728111(Cell)
> *to_onkar_at_yahoo.com* <to_onkar_at_yahoo.com>
> *onkarnath.tiwary_at_gmail.com * <onkarnath.tiwary_at_gmail.com>
>
>
>
>
>
> --
> Thanks & Regards,
> T. Onkar Nath
> Ph : +91-9826728111(Cell)
> *to_onkar_at_yahoo.com* <to_onkar_at_yahoo.com>
> *onkarnath.tiwary_at_gmail.com* <onkarnath.tiwary_at_gmail.com>
>

-- 
Thanks & Regards,
T. Onkar Nath
Ph : +91-9826728111(Cell)
to_onkar_at_yahoo.com
onkarnath.tiwary_at_gmail.com

--
http://www.freelists.org/webpage/oracle-l
Received on Wed Jun 29 2005 - 03:32:53 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US