pl / sql basicscci.drexel.edu/faculty/thu/teaching/info365/week3a.pdf · pl / sql types...
TRANSCRIPT
![Page 1: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/1.jpg)
PL / SQL Basics
Chapter 3
![Page 2: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/2.jpg)
2
PL / SQL Basics PL / SQL block Lexical units Variable declarations PL / SQL types Expressions and operators PL / SQL control structures PL / SQL style guide
![Page 3: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/3.jpg)
3
PL / SQL BlockBasic Block Structure All blocks have three (3) sections
Declarative Where all variables, cursors, types, local procedures and
functions are declared Executable
Where the work of the block is performed Contains SQL and procedural statements
Exception Errors are handled Code here is not run unless an error occurs
![Page 4: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/4.jpg)
4
Lexical Units Identifiers Delimiters Literals Comments
![Page 5: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/5.jpg)
5
Lexical Units A lexical unit is a sequence of
characters, the character set includes: Upper and lowercase letters: A-Z, a-z White space: tabs, spaces, and carriage
returns Math symbols: +-*/<>= Punctuation symbols: () {} [] ? ~ ; : . ‘ “ @
# % $ ^ & _ |
![Page 6: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/6.jpg)
6
Lexical UnitsIdentifiers
Used to name PL/SQL objects Consists of a letter followed by any
sequence of characters such as: Letters, numbers, $, underscore, # Maximum length is thirty (30) characters Other characters are not permitted
![Page 7: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/7.jpg)
7
Lexical UnitsIdentifiers ~ Examples Some proper identifiers:
y v_StudentID TempName t1 t2_ social_security_# YTD
![Page 8: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/8.jpg)
8
Lexical UnitsIdentifiers ~ Examples
Some improper identifiers: m+n _temp_ First Name OhBoyThisIsReallyALongIdentifierName 1CannotStartWithADigit
![Page 9: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/9.jpg)
9
Lexical UnitsIdentifiers ~ Reserved Words
There are many identifiers known as reserved words (keywords)
They have special meaning to PL/SQL You cannot use them as identifiers
For example the word BEGIN is used to start a PL/SQL block and cannot be used as a variable name
![Page 10: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/10.jpg)
10
Lexical UnitsDelimiters
Symbols used to separate identifiers either a single character sequence of characters
Examples of delimiters are: + * > <> <= ; || (and others…)
![Page 11: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/11.jpg)
11
Lexical UnitsLiterals A literal is a value that is not an identifier There are three (3) types of literals:
Character ‘This is a character literal’
Numeric 123 -9 +17 0 -6.9 3 9.87e-3 –95.12e7
Boolean True False Null
![Page 12: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/12.jpg)
12
Lexical UnitsComments It is important to document your code
with comments to make it clear to others and yourself
They are ignored by the PL/SQL compiler
There are two kinds of comments Single-line Multiline
![Page 13: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/13.jpg)
13
Variable Declarations Declaration syntax Variable initialization
![Page 14: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/14.jpg)
14
Variable DeclarationsDeclaration Syntax
Variables are declared in the declarative section of a block
Each variable has a specific type of data that it can hold
General syntax is: variable_name type [CONSTANT] [NOT NULL] [:=value];
![Page 15: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/15.jpg)
15
Variable DeclarationsVariable Initialization Variables are initialized in their declaration
statement v_Counter NUMBER := 100; v_Fname VARCHAR2(10) DEFAULT ‘Scott’;
If a variable is not initialized it is set to NULL NULL simply means missing or unknown
value
![Page 16: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/16.jpg)
16
PL / SQL Types Scalar types Composite types Reference types LOB types Using %TYPE User-defined subtypes Converting between Datatypes Variable scope and visibility
![Page 17: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/17.jpg)
17
PL / SQL TypesScalar Types Valid scalar types consist of the same as the
types for database columns Scalar types can be divided into seven
families: numeric character raw date rowid boolean trusted
![Page 18: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/18.jpg)
18
PL / SQL TypesComposite Types
A composite type is one that has components within it
The three (3) composite types available in PL/SQL are: Records Tables varrays
![Page 19: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/19.jpg)
19
PL / SQL TypesReference Types
A variable that is declared as a reference type can point (refer to) different storage locations over the life of the program REF CURSOR REF OBJECT
![Page 20: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/20.jpg)
20
PL / SQL TypesLOB Types
This type is used to store large objects A large object can be either binary or
character value up to 4 gigabytes Can contain unstructured data
![Page 21: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/21.jpg)
21
PL / SQL TypesUsing %TYPE
Often a PL/SQL variable will be used to manipulate data stored in a database table Variable needs to have the same type as
the table column Variable needs to be changed as the table
column is altered Time consuming and error prone
![Page 22: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/22.jpg)
22
PL / SQL TypesUsing %TYPE
By using %TYPE when declaring a variable Variable will be defined with the same type
as the associated table column Type is determined each time a block is run
or When procedures and functions are
compiled
![Page 23: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/23.jpg)
23
PL / SQL TypesUser-Defined Subtypes
A subtype is a PL/SQL type that is based on an existing type
Used to give an alternative name which describes its intended use
PL/SQL defines several subtypes DECIMAL and INTEGER are predefined
subtypes of NUMBER
![Page 24: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/24.jpg)
24
PL / SQL TypesConverting Between Datatypes Explicit Scalar Datatype Conversion
Built-in conversion functions in SQL are also available in PL/SQL
Converts explicitly between variables using formats
Examples are: TO_CHAR – converts numeric and date TO_DATE – converts character TO_NUMBER – converts character
![Page 25: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/25.jpg)
25
PL / SQL TypesConverting Between Datatypes
Implicit Scalar Datatype Conversion PL/SQL will convert between families when
possible Good programming practice suggests using
explicit conversions Formats are not used and does not clearly
show the intent of the program
![Page 26: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/26.jpg)
26
PL / SQL TypesVariable Scope and Visibility
The scope of a variable is the portion of the program in which it can be accessed
The visibility of a variable is the portion of the program where the variable can be accessed without having to qualify the reference
![Page 27: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/27.jpg)
27
Expressions and Operators Assignment Expressions
![Page 28: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/28.jpg)
28
Expressions and OperatorsAssignment The syntax for an assignment is:
variable := expression; Performed in the executable and exception
handling sections lvalues must refer to actual storage locations rvalues can be storage locations or literals An rvalue is read from while an lvalue is
written to
![Page 29: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/29.jpg)
29
Expressions and OperatorsExpressions PL/SQL expressions are rvalues These expressions have two components
An operand is the argument to an operator An operator is what operates on the operands
Precedence of operators determines the order of evaluation of the expression Please Excuse My Dear Aunt Sally
![Page 30: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/30.jpg)
30
Expressions and OperatorsExpressions Numeric expressions
Evaluated from left to right applying the precedence order of operators
Character expressions Only operator is concatenation operator || Joins one or more strings (or arguments that can
be implicitly converted) Boolean expressions
A boolean expression is any expression that evaluates to a boolean value(True, False, Null)
![Page 31: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/31.jpg)
31
PL / SQL Control Structures IF-THEN-ELSE Loops GOTOs and Labels PRAGMAs
![Page 32: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/32.jpg)
32
PL / SQL Control StructuresIF-THEN-ELSE
The syntax for an IF-THEN-ELSE statement is:
IF boolean_expression1 THEN sequence_of_statements1;
[ELSIF boolean_expression2 THENsequence_of_statements2;]
…[ELSE
sequence_of_statements3;]END IF;
![Page 33: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/33.jpg)
33
PL / SQL Control StructuresLoops
Loops are divided into four (4) categories Simple loops WHILE loops Numeric FOR loops Cursor FOR loops
![Page 34: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/34.jpg)
34
PL / SQL Control StructuresLoops ~ Simple Loops The basic kind of loop has the syntax:
LOOPsequence_of_statements;
END LOOP;
These loops will execute forever unless you include an EXIT statement Checks a condition for ending the loop since it has
no stopping condition, it syntax is:EXIT [WHEN condition];
![Page 35: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/35.jpg)
35
PL / SQL Control StructuresLoops ~ WHILE Loops
The syntax for a WHILE loop is:WHILE condition LOOP
sequence_of_statements;END LOOP;
Condition is checked before each cycle of the loop If True, loop body is executed Otherwise loop is passed over
![Page 36: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/36.jpg)
WHILE LOOP ExampleDECLARE v_a number(2) := 1; BEGIN WHILE v_a < 10 LOOP dbms_output.put_line('value of v_a: ' || v_a); v_a := v_a + 1; END LOOP; END; /
36
![Page 37: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/37.jpg)
37
PL / SQL Control StructuresLoops ~ Numeric FOR Loops The syntax for a numeric FOR loop is:
FOR loop_counter IN [REVERSE] lo_bound .. hi_bound LOOPsequence_of_statements;
END LOOP; Numeric FOR loops have a defined number of
cycles Do not declare the loop index Loop increment (decrement) is always one In order to have a different increment you
would need to include additional code in the loop body
![Page 38: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/38.jpg)
38
PL / SQL Control StructuresLoops ~ Cursor FOR Loops A cursor FOR loop is a loop that is associated:
With an explicit cursor A SELECT statement incorporated directly within
the loop boundary Used when you need to fetch and process
records from a cursor Replaces the cursor operations such as:
Open Fetch End of records Close
![Page 39: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/39.jpg)
39
File PrintStudents.sqlIllustrates a stored procedureCREATE OR REPLACE PROCEDURE PrintStudents(p_Major IN students.major%TYPE) ASCURSOR c_Students ISSELECT first_name, last_nameFROM studentsWHERE major = p_Major;
BEGINFOR v_StudentRec IN c_Students LOOPDBMS_OUTPUT.PUT_LINE(v_StudentRec.first_name || ' ' ||
v_StudentRec.last_name);END LOOP;
END;/
![Page 40: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/40.jpg)
40
PL / SQL Control StructuresGOTOs and Labels The syntax of a GOTO statement is:
GOTO label; Where label is a label defined in the PL/SQL block Labels are enclosed in double angle brackets
When a GOTO statement is evaluated, program control passes to the statement identified by the label
If your code is properly structured you will never have to use a GOTO statement
![Page 41: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/41.jpg)
41
PL / SQL Control StructuresPRAGMAs
The PRAGMA keyword signifies a preprocessor statement PRAGMAs are processed at compile time They do not execute during runtime Passes information to the compiler
![Page 42: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/42.jpg)
Example: Types of Pragmas
Until Oracle 11g, PL/SQL programming language could make use of five types of pragma(s) which are listed as below.
AUTONOMOUS_TRANSACTION – Compiler allows schema objects like subprograms, PL/SQL blocks, or triggers to commit their transaction within their scope.
RESTRICT_REFERENCES – Allows the compiler to scan the database purity during package compilation. It can be used in packages only.
EXCEPTION_INIT – Compiler associates a user defined exception name with an exception number.
SERIALLY_REUSABLE – Compiler deduces the package state from session level to just a server call. It can be used in Package spec only.
PRAGMA INLINE – New member of oracle pragma family. It is used to explicitly inline a program unit.
42
![Page 43: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/43.jpg)
43
PL / SQL Style Guide Good style means that:
It will take less time to understand what the program is doing
Modifications can be made easier and will be less error prone
Uniformity of code increases productivity Areas of where style can be applied are:
Comments Variable Names Capitalization Indentation General Guidelines
![Page 44: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/44.jpg)
44
PL / SQL Style GuideComments
At the start of each block or procedure With each variable declaration Before each major section of a block
Comments should be meaningful and not restate what the code obviously shows
It’s possible to have too many comments
![Page 45: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/45.jpg)
45
PL / SQL Style GuideVariable Names
Make the variable names descriptivet NUMBER;v_StudentID NUMBER(5);
A variable name can tell us its use:v_VariableName Program variablee_ExceptionName User-defined exceptiont_TypeName User-defined typep_ParameterName Parameter to a procedure or
function
![Page 46: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/46.jpg)
46
PL / SQL Style GuideCapitalization PL/SQL is not case sensitive Proper use of case will improve program
readability reserved words in uppercase built-in functions in uppercase predefined types in uppercase sql keywords in uppercase database objects in lowercase variable names are in mixed case, with capital letter for each
word in the name
![Page 47: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/47.jpg)
47
PL / SQL Style GuideIndentation
Use of white space (carriage returns, spaces, and tabs) is necessary to provide readability of your code
Indent: inside blocks SQL continuation statements IF-THEN-ELSE blocks
![Page 48: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/48.jpg)
48
PL / SQL Style GuideGeneral Guidelines
As you write more code you will develop a pronounced level of style
It’s a good idea to show your code to another programmer and have it reviewed
Be consistent in making your code understandable
![Page 49: PL / SQL Basicscci.drexel.edu/faculty/thu/Teaching/INFO365/Week3a.pdf · PL / SQL Types User-Defined Subtypes A subtype is a PL/SQL type that is based on an existing type Used to](https://reader033.vdocument.in/reader033/viewer/2022053112/60881aa6facb1f602803027d/html5/thumbnails/49.jpg)
49
In Conclusion We have covered the basic syntax and
structure of PL/SQL Block Variables Datatypes (scalar, composite, reference) Expressions and operators Datatype conversions Control structures Programming style