Mar 27 2009

Category: PL/SQLittichai @ 4:03 pm

Steven Feuerstein created this “I LOVE PL/SQL, AND…” web site at with the intention to collect the list of gaps/issues PL/SQL (his passion) currently has. In his recent post, he met with the PL/SQL developers at Oracle headquarter, and received confirmation that they really listen to inputs from his web site.

Sharing the same passion for PL/SQL, I’d like to help spreading the word about this effort. Please visit, and give your inputs  or vote on the enhancements you feel would benefit you the most.

The fine print here is that there is no gaurantee, but you never know; your small voice can make a big difference.

Tags: ,

Jan 22 2009

SQL and PL/SQL reserved words

Category: SQLPlusittichai @ 10:27 am

I found this tip from forum discussing about Oracle’s reserved words. You can use it to quickly view reserved words for both SQL and PL/SQL.

SQL> help reserved


PL/SQL Reserved Words have special meaning in PL/SQL, and may not be used
for identifier names (unless enclosed in "quotes").

An asterisk (*) indicates words are also SQL Reserved Words.

ALL*            DESC*           JAVA            PACKAGE         SUBTYPE
ALTER*          DISTINCT*       LEVEL*          PARTITION       SUCCESSFUL*
AND*            DO              LIKE*           PCTFREE*        SUM
ANY*            DROP*           LIMITED         PLS_INTEGER     SYNONYM*
ARRAY           ELSE*           LOCK*           POSITIVE        SYSDATE*
AS*             ELSIF           LONG*           POSITIVEN       TABLE*
ASC*            END             LOOP            PRAGMA          THEN*
AT              EXCEPTION       MAX             PRIOR*          TIME
AUTHID          EXCLUSIVE*      MIN             PRIVATE         TIMESTAMP
AVG             EXECUTE         MINUS*          PROCEDURE       TIMEZONE_ABBR
BEGIN           EXISTS*         MINUTE          PUBLIC*         TIMEZONE_HOUR
BETWEEN*        EXIT            MLSLABEL*       RAISE           TIMEZONE_MINUTE
BODY            EXTRACT         MODE*           RAW*            TO*
BOOLEAN         FALSE           MONTH           REAL            TRIGGER*
BULK            FETCH           NATURAL         RECORD          TRUE
BY*             FLOAT*          NATURALN        REF             TYPE
CHAR*           FOR*            NEW             RELEASE         UI
CHAR_BASE       FORALL          NEXTVAL         RETURN          UNION*
CHECK*          FROM*           NOCOPY          REVERSE         UNIQUE*
CLOSE           FUNCTION        NOT*            ROLLBACK        UPDATE*
CLUSTER*        GOTO            NOWAIT*         ROW*            USE
COALESCE        GROUP*          NULL*           ROWID*          USER*
COLLECT         HAVING*         NULLIF          ROWNUM*         VALIDATE*
COMMENT*        HEAP            NUMBER*         ROWTYPE         VALUES*
COMMIT          HOUR            NUMBER_BASE     SAVEPOINT       VARCHAR*
COMPRESS*       IF              OCIROWID        SECOND          VARCHAR2*
CONNECT*        IMMEDIATE*      OF*             SELECT*         VARIANCE
CONSTANT        IN*             ON*             SEPERATE        VIEW*
CREATE*         INDEX*          OPAQUE          SET*            WHEN
CURRENT*        INDICATOR       OPEN            SHARE*          WHENEVER*
CURRVAL         INSERT*         OPERATOR        SMALLINT*       WHERE*
CURSOR          INTEGER*        OPTION*         SPACE           WHILE
DATE*           INTERFACE       OR*             SQL             WITH*
DAY             INTERSECT*      ORDER*          SQLCODE         WORK
DECLARE         INTO*           OTHERS          START*          YEAR
DEFAULT*        IS*             OUT             STDDEV          ZONE


SQL Reserved Words have special meaning in SQL, and may not be used for
identifier names unless enclosed in "quotes".

An asterisk (*) indicates words are also ANSI Reserved Words.

Oracle prefixes implicitly generated schema object and subobject names
with "SYS_". To avoid name resolution conflict, Oracle discourages you
from prefixing your schema object and subobject names with "SYS_".

ACCESS          DEFAULT*         INTEGER*        ONLINE          START
ADD*            DELETE*          INTERSECT*      OPTION*         SUCCESSFUL
ALL*            DESC*            INTO*           OR*             SYNONYM
ALTER*          DISTINCT*        IS*             ORDER*          SYSDATE
AND*            DROP*            LEVEL*          PCTFREE         TABLE*
ANY*            ELSE*            LIKE*           PRIOR*          THEN*
AS*             EXCLUSIVE        LOCK            PRIVILEGES*     TO*
ASC*            EXISTS           LONG            PUBLIC*         TRIGGER
AUDIT           FILE             MAXEXTENTS      RAW             UID
BETWEEN*        FLOAT*           MINUS           RENAME          UNION*
BY*             FOR*             MLSLABEL        RESOURCE        UNIQUE*
CHAR*           FROM*            MODE            REVOKE*         UPDATE*
CHECK*          GRANT*           MODIFY          ROW             USER*
CLUSTER         GROUP*           NOAUDIT         ROWID           VALIDATE
COLUMN          HAVING*          NOCOMPRESS      ROWNUM          VALUES*
COMMENT         IDENTIFIED       NOT*            ROWS*           VARCHAR*
COMPRESS        IMMEDIATE*       NOWAIT          SELECT*         VARCHAR2
CONNECT*        IN*              NULL*           SESSION*        VIEW*
CREATE*         INCREMENT        NUMBER          SET*            WHENEVER*
CURRENT*        INDEX            OF*             SHARE           WHERE
DATE*           INITIAL          OFFLINE         SIZE*           WITH*
DECIMAL*        INSERT*          ON*             SMALLINT*

Tags: , ,