introduction to pl/sql oracle database pl/sql 10g programming chapter 1 & 2
TRANSCRIPT
Introduction to PL/SQLIntroduction to PL/SQLOracle Database PL/SQL 10g Oracle Database PL/SQL 10g
ProgrammingProgramming
Chapter 1 & 2Chapter 1 & 2
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 22
Introduction to PL/SQLIntroduction to PL/SQL
SQL*Plus EnvironmentSQL*Plus Environment Development EnvironmentsDevelopment Environments Database Design ConceptsDatabase Design Concepts SQL ConceptsSQL Concepts PL/SQL LanguagePL/SQL Language
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 33
Introduction to PL/SQLIntroduction to PL/SQL
SQL*Plus EnvironmentSQL*Plus Environment The interactive and batch processing environment for SQL The interactive and batch processing environment for SQL
and PL/SQL statements.and PL/SQL statements. Command line interface to Oracle.Command line interface to Oracle. The connection and session environment:The connection and session environment:
Interactive scripting.Interactive scripting. Batch execution using silent option.Batch execution using silent option. Session environment when connecting by using OCI, ODBC and Session environment when connecting by using OCI, ODBC and
JDBC external programming models.JDBC external programming models. Supports formatting commands.Supports formatting commands. Supports session scope variables, also known as bind Supports session scope variables, also known as bind
variables.variables. Supports a GUI versions for Microsoft Windows, which is Supports a GUI versions for Microsoft Windows, which is
being deprecated.being deprecated.
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 44
Introduction to PL/SQLIntroduction to PL/SQL
SQL*Plus EnvironmentSQL*Plus Environment SQL*Plus is run by using the sqlplus executable on Microsoft SQL*Plus is run by using the sqlplus executable on Microsoft
Windows, Linux or Unix.Windows, Linux or Unix. SQL*Plus supports option flags:SQL*Plus supports option flags:
-c-c sets command compatibility to current or older version.sets command compatibility to current or older version. -h-h provides help screen.provides help screen. -l-l sets the log on attempts to a number other than the default sets the log on attempts to a number other than the default
3.3. -m-m lets you set a series of HTML formatting options.lets you set a series of HTML formatting options. -r-r restricts user interaction with the file system.restricts user interaction with the file system. -s-s sets silent mode for batch processing by suppressing console sets silent mode for batch processing by suppressing console
feedback.feedback. -v-v returns the version.returns the version.
SQL*Plus supports different connection models:SQL*Plus supports different connection models: DBA Administration connections using “/ AS SYSOPER” or “/ AS DBA Administration connections using “/ AS SYSOPER” or “/ AS
SYSDBA”.SYSDBA”. Default connection, which enables a user to connect to a schema and Default connection, which enables a user to connect to a schema and
database.database. Open environment not conneted to a database using “/NOLOG” mode.Open environment not conneted to a database using “/NOLOG” mode.
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 55
Introduction to PL/SQLIntroduction to PL/SQL
SQL*Plus EnvironmentSQL*Plus Environment SQL*Plus connection samples:SQL*Plus connection samples:
sqlplus –h | -vsqlplus –h | -v sqlplus username/password[@sid]sqlplus username/password[@sid] sqlplus –s username/password[@sid] @script.sqlsqlplus –s username/password[@sid] @script.sql
SQL*Plus commands do not require semicolons to run.SQL*Plus commands do not require semicolons to run. SQL*Plus redirects output to files with a default .lst SQL*Plus redirects output to files with a default .lst
extension:extension:SQL> spool C:\mydir\myoutputfile.logSQL> spool C:\mydir\myoutputfile.log
SQL*Plus runs files from local or qualified directories using SQL*Plus runs files from local or qualified directories using the @ symbol:the @ symbol:
SQL> @C:\mydir\myfile.sqlSQL> @C:\mydir\myfile.sql SQL*Plus runs scripts with a .sql extension when the SQL*Plus runs scripts with a .sql extension when the
extension is excluded.extension is excluded.
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 66
Introduction to PL/SQLIntroduction to PL/SQL
SQL*Plus EnvironmentSQL*Plus Environment SQL*Plus can edit the current buffer:SQL*Plus can edit the current buffer:
Microsoft is preconfigured, you need only type:Microsoft is preconfigured, you need only type:SQL> edSQL> ed
Linux or Unix requires:Linux or Unix requires:SQL> define _editor=viSQL> define _editor=viSQL> edSQL> ed
SQL*Plus can edit a file:SQL*Plus can edit a file: Microsoft is preconfigured, you need only type:Microsoft is preconfigured, you need only type:
SQL> ed C:\mydir\myfile.sqlSQL> ed C:\mydir\myfile.sql Linux or Unix requires:Linux or Unix requires:
SQL> define _editor=viSQL> define _editor=viSQL> ed C:\mydir\myfile.sqlSQL> ed C:\mydir\myfile.sql
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 77
Introduction to PL/SQLIntroduction to PL/SQL
SQL*Plus EnvironmentSQL*Plus Environment SQL*Plus has many environment variables:SQL*Plus has many environment variables:
You can find the default settings by:You can find the default settings by:SQL> show allSQL> show all
You change many environment variables by:You change many environment variables by:SQL> set echo on | offSQL> set echo on | off
You set some environment variables by providing a value:You set some environment variables by providing a value:SQL> set sqlpluscompatibility 9.2.0SQL> set sqlpluscompatibility 9.2.0
You set some environment variables by providing a delimited value:You set some environment variables by providing a delimited value:SQL> set null “<null>”SQL> set null “<null>”SQL> set suffix “pls”SQL> set suffix “pls”
SQL*Plus common requirements:SQL*Plus common requirements: Suppress column headers:Suppress column headers:
SQL> set pagesize 0SQL> set pagesize 0 Enabling maximum standard out redirection from PL/SQL:Enabling maximum standard out redirection from PL/SQL:
SQL> set serveroutput on size 1000000SQL> set serveroutput on size 1000000
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 88
Introduction to PL/SQLIntroduction to PL/SQL
SQL*Plus EnvironmentSQL*Plus Environment SQL*Plus can read only a file into the buffer:SQL*Plus can read only a file into the buffer:
You use the GET command.You use the GET command. You cannot run the file without errors if there are SQL*Plus You cannot run the file without errors if there are SQL*Plus
commands in it.commands in it. You should use the @ command to read and execute a script You should use the @ command to read and execute a script
when it contains SQL*Plus commands.when it contains SQL*Plus commands. SQL*Plus supports global session variables, also known as SQL*Plus supports global session variables, also known as
bind variables, and they must be SQL types not subtypes, bind variables, and they must be SQL types not subtypes, like:like:
BINARY_DOUBLEBINARY_DOUBLEBINARY_FLOATBINARY_FLOATCHAR (n char | byte)CHAR (n char | byte)CLOBCLOBNUMBERNUMBERREF CURSORREF CURSORVARCHAR (n char | byte)VARCHAR (n char | byte)
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 99
Introduction to PL/SQLIntroduction to PL/SQL
SQL*Plus EnvironmentSQL*Plus Environment SQL*Plus global session variables:SQL*Plus global session variables:
Are declared in SQL*Plus.Are declared in SQL*Plus. Are defined in PL/SQL program units.Are defined in PL/SQL program units.
SQL*Plus declares a global session variable using SQL*Plus declares a global session variable using the following syntax:the following syntax:
SQL> variable mynum NUMBERSQL> variable mynum NUMBERSQL> variable mystr VARCHAR2(10)SQL> variable mystr VARCHAR2(10)
SQL*Plus defines the global session variables in SQL*Plus defines the global session variables in PL/SQL program units, which can be:PL/SQL program units, which can be: Anonymous block programs, orAnonymous block programs, or Named block programs.Named block programs.
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 1010
Introduction to PL/SQLIntroduction to PL/SQL
Development EnvironmentsDevelopment Environments SQL*Plus is the interface to the SQL*Plus is the interface to the
database.database. SQL runs inside of the SQL*Plus SQL runs inside of the SQL*Plus
environment.environment. PL/SQL runs inside of the SQL PL/SQL runs inside of the SQL
environment.environment. Oracle development in SQL & Oracle development in SQL &
PL/SQL is also supported by PL/SQL is also supported by external Integrated Development external Integrated Development Environments (IDEs).Environments (IDEs).
External programs connect External programs connect through the SQL*Plus through the SQL*Plus environment.environment.
User-defined libraries are User-defined libraries are declared by SQL.declared by SQL.
User-defined libraries are User-defined libraries are wrapped by PL/SQL named blocks.wrapped by PL/SQL named blocks.
Oracle
SQL
PL/SQL
SQL*Plus
Connect
ODBC
JDBC
StandardLibraries
UserLibraries
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 1111
Introduction to PL/SQLIntroduction to PL/SQL
Development EnvironmentsDevelopment Environments Oracle PL/SQL Development is supported by:Oracle PL/SQL Development is supported by:
Oracle SQL*PlusOracle SQL*Plus Oracle JDeveloper.Oracle JDeveloper. Oracle SQL Developer.Oracle SQL Developer. Oracle Application Developer.Oracle Application Developer. Quest Software’s Toad Developer.Quest Software’s Toad Developer.
IDE tools provide:IDE tools provide: Diagnostic tools.Diagnostic tools. Debugging tools.Debugging tools. Syntax auto fill tools.Syntax auto fill tools. Syntax highlighting.Syntax highlighting.
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 1212
Introduction to PL/SQLIntroduction to PL/SQL
Development EnvironmentsDevelopment Environments The Oracle Transparent Network Substrate (TNS) The Oracle Transparent Network Substrate (TNS)
implements an application layer of the OSI model.implements an application layer of the OSI model. Users connect through TNS to the database using TCP Users connect through TNS to the database using TCP
sockets or IPC connections.sockets or IPC connections. Clients use the tnsnames.ora file like a host file, and Clients use the tnsnames.ora file like a host file, and
map machine names to a combination of IP and port map machine names to a combination of IP and port address.address. Net service name resolves to machine name and port Net service name resolves to machine name and port
number.number. The service name in the tnsnames.ora file maps to the The service name in the tnsnames.ora file maps to the
Oracle database SID value.Oracle database SID value. The Oracle server listens on a port for incoming TNS The Oracle server listens on a port for incoming TNS
requests, and uses three configuration files:requests, and uses three configuration files: listener.oralistener.ora sqlnet.orasqlnet.ora tnsnames.oratnsnames.ora
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 1313
Introduction to PL/SQLIntroduction to PL/SQL
Development EnvironmentsDevelopment Environments Oracle PL/SQL development is supported by:Oracle PL/SQL development is supported by:
Oracle SQL*PlusOracle SQL*Plus Oracle JDeveloper.Oracle JDeveloper. Oracle SQL Developer.Oracle SQL Developer. Oracle Application Developer.Oracle Application Developer. Quest Software’s Toad Developer.Quest Software’s Toad Developer.
IDE tools provide:IDE tools provide: Diagnostic tools.Diagnostic tools. Debugging tools.Debugging tools. Syntax auto fill tools.Syntax auto fill tools. Syntax highlighting.Syntax highlighting.
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 1414
Introduction to PL/SQLIntroduction to PL/SQL
Database Design ConceptsDatabase Design Concepts Database Tables are:Database Tables are:
2-dimensional arrays of rows and columns.2-dimensional arrays of rows and columns. Columns can hold a scalar or compound variable:Columns can hold a scalar or compound variable:
Scalar variables hold only one thing at a time.Scalar variables hold only one thing at a time. Compound variables hold:Compound variables hold:
A list of one thing, which can be scalar or compound.A list of one thing, which can be scalar or compound. A structure, which is also known as a record.A structure, which is also known as a record.
Normalized tables with a primary key.Normalized tables with a primary key. Normalized tables with one or more foreign keys.Normalized tables with one or more foreign keys.
Foreign keys hold a copy of a primary key in another table.Foreign keys hold a copy of a primary key in another table. Foreign keys hold a copy of a primary key in the same table.Foreign keys hold a copy of a primary key in the same table.
Normalized tables with one or more superkey:Normalized tables with one or more superkey: Super keys identify one or more rows in a table.Super keys identify one or more rows in a table. Super keys identify one row in a relation.Super keys identify one row in a relation.
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 1515
Introduction to PL/SQLIntroduction to PL/SQL
Database Design ConceptsDatabase Design Concepts Database Tables hold data.Database Tables hold data. Database Tables have a binary or n-ary Database Tables have a binary or n-ary
relationships:relationships: Binary relations exist between two tables and Binary relations exist between two tables and
are:are: One-to-oneOne-to-one One-to-manyOne-to-many Many-to-many between two tables.Many-to-many between two tables.
N-ary relations exist between three or more N-ary relations exist between three or more tables and are:tables and are:
Typically many-to-manyTypically many-to-many Occasionally one-to-many.Occasionally one-to-many. Rarely one-to-one.Rarely one-to-one.
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 1616
Introduction to PL/SQLIntroduction to PL/SQL
Database Design ConceptsDatabase Design Concepts
Database tables are normalized in:Database tables are normalized in: 33rd rd or higher normal formor higher normal form Domain Key Normal Form (DKNF):Domain Key Normal Form (DKNF):
DKNF uses a surrogate key, also known as DKNF uses a surrogate key, also known as automatic numbering.automatic numbering.
DKNF cannot use a natural key.DKNF cannot use a natural key.
Database tables have constraints on Database tables have constraints on column values.column values.
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 1717
Introduction to PL/SQLIntroduction to PL/SQL
Database Design ConceptsDatabase Design Concepts
Unique:Unique: A A uniqueunique constraint tells the database to constraint tells the database to
disallow a column to hold two or more disallow a column to hold two or more equal values, and typically made using equal values, and typically made using “out-of-line” constraint syntax.“out-of-line” constraint syntax.
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 1818
Introduction to PL/SQLIntroduction to PL/SQL
Database Design ConceptsDatabase Design Concepts
Not nullNot null:: A A not nullnot null constraint tells the database constraint tells the database
to disallow entry of a null value into the to disallow entry of a null value into the column from an column from an INSERTINSERT or or UPDATEUPDATE statement, a not null constraint must be statement, a not null constraint must be made using made using “inline”“inline” syntax or it is a syntax or it is a checkcheck constraint. constraint.
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 1919
Introduction to PL/SQLIntroduction to PL/SQL
Database Design ConceptsDatabase Design Concepts
Check:Check: A A checkcheck constraint tells the database to constraint tells the database to
disallow entry or update of a column disallow entry or update of a column value that fails to meet the expression value that fails to meet the expression governing the constraint, and is typically governing the constraint, and is typically made using “out of line” constraint made using “out of line” constraint syntax.syntax.
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 2020
Introduction to PL/SQLIntroduction to PL/SQL
Database Design ConceptsDatabase Design Concepts
Primary key:Primary key: A A primaryprimary key tells the database to allow key tells the database to allow
entry or update of a column value that is entry or update of a column value that is only both unique and not null, and it only both unique and not null, and it enables a foreign key constraint to enables a foreign key constraint to reference the column or set of columns reference the column or set of columns defined as the primary key, and typically defined as the primary key, and typically made using “out-of-line” constraint made using “out-of-line” constraint syntax.syntax.
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 2121
Introduction to PL/SQLIntroduction to PL/SQL
Database Design ConceptsDatabase Design Concepts
Foreign key:Foreign key: A A foreignforeign key constraint tells the key constraint tells the
database to disallow entry or update of database to disallow entry or update of a column value that is not found in the a column value that is not found in the referenced primary key column list of referenced primary key column list of values, and typically made using “out-values, and typically made using “out-of-line” constraint syntax.of-line” constraint syntax.
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 2222
Introduction to PL/SQLIntroduction to PL/SQL
SQL ConceptsSQL Concepts Structured Query Language (SQL)Structured Query Language (SQL)
Structured English QUEry Language Structured English QUEry Language (SEQUEL)(SEQUEL)
ANSI StandardsANSI Standards ANSI SQL-86ANSI SQL-86 ANSI SQL-89ANSI SQL-89 ANSI SQL-92ANSI SQL-92 ANSI SQL:1999ANSI SQL:1999 ANSI SQL:2003ANSI SQL:2003
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 2323
Introduction to PL/SQLIntroduction to PL/SQL
SQL ConceptsSQL Concepts Security is tiered by ANSI-SPARC rulesSecurity is tiered by ANSI-SPARC rules
Superuser – holds internal dataSuperuser – holds internal data Administrator – holds conceptual dataAdministrator – holds conceptual data User – holds external dataUser – holds external data
Superuser grants privileges to usersSuperuser grants privileges to users Grants individual privileges one at a time.Grants individual privileges one at a time. Creates roles as groups of privileges.Creates roles as groups of privileges. Grants grouped privileges as roles.Grants grouped privileges as roles.
Data can be restricted at various levelsData can be restricted at various levels
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 2424
Introduction to PL/SQLIntroduction to PL/SQL
SQL ConceptsSQL Concepts Data Control Language (DCL)Data Control Language (DCL)
Manages transaction controls.Manages transaction controls. Uses the Uses the COMMITCOMMIT, , ROLLBACKROLLBACK, and , and SAVEPOINTSAVEPOINT commands. commands.
Data Definition Language (DDL)Data Definition Language (DDL) Creates or modifies data structures in the database.Creates or modifies data structures in the database. Uses the Uses the ALTERALTER, , CREATECREATE, , DROPDROP, , FLASHBACKFLASHBACK, , GRANTGRANT, , PURGEPURGE, , RENAMERENAME, , REVOKEREVOKE, and , and TRUNCATETRUNCATE commands. commands.
Uses the recycle bin in Oracle 10g Release 2.Uses the recycle bin in Oracle 10g Release 2. Data Manipulation Language (DML)Data Manipulation Language (DML)
Inserts, updates and deletes data from tables.Inserts, updates and deletes data from tables. Uses the Uses the INSERTINSERT, , UPDATEUPDATE, and , and DELETEDELETE commands. commands.
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 2525
Introduction to PL/SQLIntroduction to PL/SQL
PL/SQL LanguagePL/SQL Language Procedural Language/Structured Query Language (PL/SQL)Procedural Language/Structured Query Language (PL/SQL)
Introduced in Oracle 6 as a report formatting language.Introduced in Oracle 6 as a report formatting language. Improved to a useful programming language in Oracle 7.Improved to a useful programming language in Oracle 7. Improved to include collections in Oracle 8.Improved to include collections in Oracle 8. Improved to include instantiable object types in Oracle 9i Improved to include instantiable object types in Oracle 9i
Release 2.Release 2. Improved to include conditional compilation in Oracle 10g.Improved to include conditional compilation in Oracle 10g.
PL/SQL LegacyPL/SQL Legacy Derived syntax from Ada programming language.Derived syntax from Ada programming language. Inherited operators and structure from Pascal through Ada.Inherited operators and structure from Pascal through Ada.
PL/SQL Block StructurePL/SQL Block Structure Implemented as a strongly typed language.Implemented as a strongly typed language. Implemented as a formal blocked language.Implemented as a formal blocked language.
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 2626
Introduction to PL/SQLIntroduction to PL/SQL
PL/SQL LanguagePL/SQL Language PL/SQL IntegrationPL/SQL Integration
Tightly integrated with SQL.Tightly integrated with SQL. Shares SQL data types.Shares SQL data types. Includes PL/SQL only data types.Includes PL/SQL only data types. Enables user-defined data types.Enables user-defined data types. Interface between external procedures and Interface between external procedures and
SQL*Plus.SQL*Plus. Interface between external libraries and Interface between external libraries and
SQL*Plus.SQL*Plus.
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 2727
Introduction to PL/SQLIntroduction to PL/SQL
PL/SQL LanguagePL/SQL Language PL/SQL Advanced FeaturesPL/SQL Advanced Features
Full object-oriented programming is available from Full object-oriented programming is available from Oracle 9i Release 2.Oracle 9i Release 2.
Full support for dynamic SQL.Full support for dynamic SQL. Full support for pass-by-value and pass-by-reference Full support for pass-by-value and pass-by-reference
models.models. Full support for wrapping solutions in other Full support for wrapping solutions in other
programming languages.programming languages. Full catalog definitions act like OO class files.Full catalog definitions act like OO class files. Robust extensions made through built-in packages.Robust extensions made through built-in packages. Conditional compilation available in Oracle 10g Release Conditional compilation available in Oracle 10g Release
2.2.
20062006 Oracle Database PL/SQL 10g Programming Oracle Database PL/SQL 10g Programming
(Chapter 1 & 2)(Chapter 1 & 2) Page Page 2828
SummarySummary
SQL*Plus EnvironmentSQL*Plus Environment Development EnvironmentsDevelopment Environments Database Design ConceptsDatabase Design Concepts SQL ConceptsSQL Concepts PL/SQL LanguagePL/SQL Language