sql >> Database teknologi >  >> RDS >> Oracle

Omdøb kolonne med navnet TYPE, LEVEL i sqlplus

NIVEAU er et Oracle søgeord , dog ikke forbeholdt. Hvis du vil bruge det som et objektnavn, skal du repræsentere navnet på et objekt med en anført identifikator ved at bruge doble anførselstegn hver gang du henviser til det objekt.

SQL> SELECT keyword, reserved FROM V$RESERVED_WORDS WHERE keyword='LEVEL';

KEYWORD                        R
------------------------------ -
LEVEL                          N

SQL>

Det er grunden, hvis du bruger søgeordet LEVEL som ikke-anført identifikator , vil det give en fejl:

SQL> CREATE TABLE t(level NUMBER);
CREATE TABLE t(level NUMBER)
               *
ERROR at line 1:
ORA-00904: : invalid identifier

Nu ifølge dokumentationen om databaseobjektnavne og kvalifikationer , hvis du opretter objektet ved hjælp af dobbelte anførselstegn, bliver det forskel på store og små bogstaver og skal altid bruges på samme måde, uanset hvor der henvises til objektet.

For eksempel,

SQL> CREATE TABLE t1("level" NUMBER);

Table created.

SQL>
SQL> ALTER TABLE t1 RENAME COLUMN "level" to clevel;

Table altered.

SQL>
SQL> CREATE TABLE t2("LEVEL" NUMBER);

Table created.

SQL>
SQL> ALTER TABLE t2 RENAME COLUMN "LEVEL" to clevel;

Table altered.

SQL>

Det er bedre ikke at bruge søgeordet og give en ordentlig navnekonvention.

SQL> CREATE TABLE t(clevel NUMBER);

Table created.

SQL>


  1. Ikke en GROUP BY-udtryksfejl

  2. grupper efter månedsnavn i sql

  3. Kald til udefineret funktion mysql_query()

  4. Sådan kalder du en lagret procedure og får returværdi i Slick (ved hjælp af Scala)