Stored Procedure used in PosgreSQL
Professor: Dr. Shu-Ching Chen
TA: Hsin-Yu Ha
What are stored procedures
A subroutine available to applications that access a relational
database system.
PL/pgSQL : A loadable procedural language.
Creates functions and trigger procedures
Adds control structures
Performs complex computation
Inherits all user-defined types, functions
Can be defined to be trusted by the server
Easy to use
Why do we need stored procedure
One Query
Internet
Database
Server
Wait, receive, process/compute
Reduce roundtrips across the network
Can make security easier to manage
Are precompiled
Structure of PL/pgSQL
Declarations (1)
Declaring PL/pgSQL variable
Declarations (2)
Declaring PL/pgSQL variable and assigning values
Declarations (3)
Declaring Function Parameters
(1) directly give a name to the parameter in the command
(2) name ALIAS FOR $n;
Declarations (4)
Directly using argument variables
Declarations (5)
Attributes
%TYPE attribute
Declarations (6)
Attributes
%ROWTYPE attribute
Comment syntax
Single-line comments
Block comments
Basic Statements (1)
Assignment
Executing a Command with NO RESULT – PERFORM
Basic Statements (2)
Executing a Command with a Single-row result
Basic Statements (3)
Example
Basic Statements (4)
Basic Statements (5)
FOUND – Boolean variable
Control Structures(1)
RETURN expression
Control Structures(2)
IF statements
IF … THEN
IF … THEN … ELSE
IF … THEN … ELSIF … THEN … ELSE
Control Structures(3)
CASE statements
CASE … WHEN … THEN … ELSE … END CASE
CASE WHEN … THEN … ELSE … END CASE
Control Structures(4)
LOOP
EXIT
Control Structures(5)
CONTINUE
WHILE
Control Structures(6)
FOR (Integer Variant)
Control Structures(7)
FOR (Looping through query results)
Control Structures(8)
Trapping Errors
http://www.postgresql.org/docs/9.1/static/errcodes-
appendix.html#ERRCODES-TABLE
Cursors (1)
Declaring Cursor Variables
OPEN FOR query
Cursors (2)
Using Cursors
FETCH
MOVE
NEXT
PRIOR
FIRST
LAST
ABSOLUTE count
RELATIVE count
FORWARD
BACKWORD
Cursors (3)
Using Cursors
CLOSE
Returning Cursor
Cursors (4)
Looping Through a Cursor’s Result
Errors and Messages
RAISE
Example
Reference
PostgreSQL Manuals PostgreSQL 9.1
http://www.postgresql.org/docs/9.1/static/index.html
Practical PostgreSQL
http://www.faqs.org/docs/ppbook/c19610.htm
Stored Procedure in PgAdmin
2
1
3
Stored Procedure in PgAdmin