The PL/SQL language is constructed from letters, digits, symbols, and whitespace, as defined in the following table.
Characters are grouped together into the four lexical units: identifiers, literals, delimiters, and comments.
Identifiers are names for PL/SQL objects such as constants, variables, exceptions, procedures, cursors, and reserved words. Identifiers:
If you enclose an identifier within double quotes, then all but the first of these rules are ignored. For example, the following declaration is valid:
DECLARE "1 ^abc" VARCHAR2(100); BEGIN IF "1 ^abc" IS NULL THEN ... END;
Literals are specific values not represented by identifiers. For example, TRUE, 3.14159, 6.63E-34, `Moby Dick', and NULL are all literals of type Boolean, number, or string. There are no date or complex datatype literals as they are internal representations. Unlike the rest of PL/SQL, literals are case-sensitive. To embed single quotes within a string literal, place two single quotes next to each other. See the following table for examples.
Delimiters are symbols with special meaning, such as := (assignment operator), || (concatenation operator), and ; (statement delimiter). The following table lists delimiters.
Comments are sections of the code that exist to aid readability. The compiler ignores them.
A single-line comment begins with a double hyphen (‐‐) and ends with a new line. The compiler ignores all characters between the ‐‐ and the new line.
Multiline comments begin with slash asterisk (/*) and end with asterisk slash (*/). The /* */ comment delimiters can also be used on a single-line comment. The following block demonstrates both kinds of comments:
DECLARE -- Two dashes comment out only the physical line. /* Everything is a comment until the compiler encounters the following symbol */
You cannot embed multiline comments within a multiline comment, so care needs to be exercised during development if you comment out portions of code that include comments. The following code demonstrates:
DECLARE /* Everything is a comment until the compiler /* This comment inside another WON'T work!*/ encounters the following symbol. */ /* Everything is a comment until the compiler -- This comment inside another WILL work! encounters the following symbol. */
The PRAGMA keyword is used to give instructions to the compiler. There are four types of pragmas in PL/SQL:
A PL/SQL program is composed of one or more logical statements. A statement is terminated by a semicolon delimiter. The physical end-of-line marker in a PL/SQL program is ignored by the compiler, except to terminate a single-line comment (initiated by the ‐‐ symbol).
Each PL/SQL program is a block consisting of a standard set of elements, identified by keywords (see Figure 1.1 ). The block determines the scope of declared elements, and how exceptions are handled and propagated. A block can be anonymous or named. Named blocks include functions, procedures, packages, and triggers. Here is an example of an anonymous block:
DECLARE whoops NUMBER DEFAULT 99; BEGIN -- Display a two-digit year number. DBMS_OUTPUT.PUT_LINE ('What century? ' || whoops); END;
Here is a named block that performs the same action:
CREATE OR REPLACE PROCEDURE show_the_problem IS whoops NUMBER DEFAULT 99; BEGIN -- Display a two-digit year number. DBMS_OUTPUT.PUT_LINE ('What century? ' || whoops); END show_the_problem;
The following table describes the sections of a PL/SQL block:
Copyright (c) 2000 O'Reilly & Associates. All rights reserved.