What is a Function in PL/SQL?
A function are named PL/SQL Block.It is similar to
a procedure. The major difference between a
procedure and a function is, a function must always
return a value, but a procedure may or may not
return a value.
Structure of Function
stored functions 3 sections
1.declaration section-declaration of variables and
constants
2.executable section-pl/sql statements which
perform specific task
3.exception handling section-the error occuring
in executable part can be handled in this section
CREATE [OR REPLACE] FUNCTION function_name
[ (parameter [,parameter]) ]
RETURN return_datatype
IS | AS
[declaration_section]
BEGIN
executable_section
[EXCEPTION
exception_section]
END [function_name];
CREATE [OR REPLACE] FUNCTION fa(m number)
RETURN number
IS
f number:=1;
BEGIN
for I in 1….m
Loop
F:=f*I;
End loop;
return f;
End;
TwoTypes Functions
Single-row
functions
Multiple-row
functions
Return one result
per row
Return one result
per set of rows
Functions
Single row functions return a single result
per every row. There are different types of
single-row functions.
Conversion
Character
Number
Date
General
Single-row
functions
Character
functions
LOWER
UPPER
INITCAP
CONCAT
SUBSTR
LENGTH
INSTR
LPAD | RPAD
TRIM
REPLACE
Case-manipulation
functions
1) Character or Text Functions: Character functions
accept character input and can return both character
and number values.
Character-manipulation
functions
1.LOWER
The Lower function converts the character values into
lowercase letters
.
2. UPPER
The Upper function converts the character values into
uppercase letters.
3. INITCAP
The Initcap function coverts the first character of each
word into uppercase and the remaining characters into
lowercase.
.
.
Character-manipulation functions
1.CONCAT
The Concat function coverts the first string
with the second string
2. SUBSTR
The Substr function returns specified characters
from character value starting at position m and n
characters long. If you omit n, all characters starting
from position m to the end are returned.
3.LENGTH
The Length function is used to find the number of
characters in a string
4.RPAD
The Rpad function pads the character value left-justified
to a total width of n character positions.
5.TRIM
The Trim function removes the leading or trailing or both
the characters from a string.
6.REPLACE
The Replace function is used to replace a
character with another Character in a string.
2) Numeric Functions:
Numeric functions accept numeric input and return
numeric values.
ROUND
TRUNC
Numeric functions
3) Date Functions:
Date functions operate on DATE.
Date function
MONTHS_BETWEEN
ADD_MONTHS
NEXT_DAY
LAST_DAY
Explicit data
type conversion
Data type conversion
Implicit data type
conversion
4) Conversion Functions:
Conversion functions convert a value from one
datatype to another.
EXAMPLE
sql>create table stu1(
name varchar2(8),
regno varchar2(10)
mark number(6,2),
DOB date
);
Table created.
SQL> desc stu1;
Name Null? Type
----------------------------------------- -------- --------------
NAME VARCHAR2(8)
REGNO VARCHAR2(10)
DOB DATE
Mark NUMBER
SQL> insert into stuu2 values(&name,&regno,&dob,&mark);
Enter value for name: 'xx'
Enter value for regno: '13sms01'
Enter value for dob: '27-apr-2013'
Enter value for mark: 78.23
old 1: insert into stuu2 values(&name,&regno,&dob,&mark)
new 1: insert into stuu2 values('xx','13sms01','27-apr-
2013',78.23)
1 row created.
SQL> /
Enter value for name: 'yy'
Enter value for regno: '13sms02'
Enter value for dob: '24-jan-2012'
Enter value for mark: 89.78
old 1:
insert into stuu2 values(&name,&regno,&dob,&mark)
new 1: insert into stuu2 values('yy','13sms02','24-jan-
2012',89.78)
1 row created.
SQL> select*from stu1;
NAME REGNO DATE MARK
-------- ---------- ----------------- ------------------
xx 13sms01 27-apr-2013 78.23
yy 13sms02 24-jan-2012 89.78
CASE-MANIPULATION FUNCTION
SQL> select
2 lower(name),upper(name),initcap(name) from stu1;
LOWER(NA UPPER(NA INITCAP(
-------- -------- --------
xx XX Xx
yy YY Yy
CHARACTER MANIPULATION FUNCTION
SQL> select concat(name,regno),
substr(regno,3,2),
length(name),
rpad(regno,10,'*')RPAD,
lpad(regno,10,'*')LPAD,
replace(regno,‘sms','ma')"replace”from stu1;;
CONCAT(NAME,REGNO) SUB LENGTH(NAME) RPAD
------------------ -- ------------ ---------- ---------- --------------------
xx13sms01 sm 2 13sms01***
yy13sms02 sm 2 13sms02***
LPAD replace
---------- ----------
***13sms01 13sms01
***13sms02 13sms02
NUMERIC FUNCTIONS
SQL> select round(mark,1),
trunc(mark,1)
from stu1;
ROUND(MARK,1) TRUNC(MARK,1)
------------- -------------
78.2 78
89.3 89
DATE FUNCTION
SQL> select
add_months(dob,2),
last_day(dob)
from stu1;
ADD_MONTH LAST_DAY(
--------- ---------
27-JUN-13 30-APR-13
20-MAR-12 31-JAN-12
27-JUN-13 30-APR-13
24-MAR-12 31-JAN-12
Multiple-Row Functions
Functions that take a collection of values
as input and return a single value. These
functions are known as group functions and
aggregate function.
Types:
1.avg - Returns avg value of a given expression
2.Min - Returns Minimum value of a given expression
3.Max - Returns Maximum value of a given expression.
4.Sum - Returns total or sum of the expr.
5.count-Counts the no of values present in a column.
EXAMPLE
sql>create table stu2(
major varchar2(10),
semester varchar2(10)
noofpapers number(2),
);
Table created.
SQL> desc stu2;
Name Null? Type
----------------------------------------- -------- --------------
MAJOR VARCHAR2(10)
SEMESTER VARCHAR2(10)
NOOFPAPERS NUMBER
SQL> insert into stu2 values(&major,&semester,&noofpapers);
Enter value for name: ‘computer'
Enter value for regno: ‘first’
Enter value for dob: 6
old 1: insert into stuu2 values(&major,&semester,&noofpapers)
new 1: insert into stuu2 values(‘computer’,’first’,6)
1 row created.
SQL> insert into stu2 values(&major,&semester,&noofpapers);
Enter value for name: ‘computer'
Enter value for regno: ‘second’
Enter value for dob: 5
old 1: insert into stuu2 values(&major,&semester,&noofpapers)
new 1: insert into stuu2 values(‘computer’,’second’,5)
1 row created
SQL> insert into stu2
values(&major,&semester,&noofpapers);
Enter value for name: ‘history'
Enter value for regno: ‘first’
Enter value for dob: 6
old 1: insert into stuu2
values(&major,&semester,&noofpapers)
new 1: insert into stuu2 values(‘history’,’first’,6)
1 row created
MULTIPLE ROW FUNCTION
Sql>select major,sum(noofpapers),
count(noofpapers),
avg(noofpapers)
from stu2 group by major;
MAJOR SUM(NOOFPAPERS) COUNT(NOOFPAPERS) AVG(NO
-------- -------- -------- -----------
computer 11 2 5.5
history 6 2 3

Function and types

  • 1.
    What is aFunction in PL/SQL? A function are named PL/SQL Block.It is similar to a procedure. The major difference between a procedure and a function is, a function must always return a value, but a procedure may or may not return a value.
  • 2.
    Structure of Function storedfunctions 3 sections 1.declaration section-declaration of variables and constants 2.executable section-pl/sql statements which perform specific task 3.exception handling section-the error occuring in executable part can be handled in this section
  • 3.
    CREATE [OR REPLACE]FUNCTION function_name [ (parameter [,parameter]) ] RETURN return_datatype IS | AS [declaration_section] BEGIN executable_section [EXCEPTION exception_section] END [function_name];
  • 4.
    CREATE [OR REPLACE]FUNCTION fa(m number) RETURN number IS f number:=1; BEGIN for I in 1….m Loop F:=f*I; End loop; return f; End;
  • 5.
    TwoTypes Functions Single-row functions Multiple-row functions Return oneresult per row Return one result per set of rows Functions
  • 6.
    Single row functionsreturn a single result per every row. There are different types of single-row functions.
  • 7.
  • 8.
    Character functions LOWER UPPER INITCAP CONCAT SUBSTR LENGTH INSTR LPAD | RPAD TRIM REPLACE Case-manipulation functions 1)Character or Text Functions: Character functions accept character input and can return both character and number values. Character-manipulation functions
  • 9.
    1.LOWER The Lower functionconverts the character values into lowercase letters . 2. UPPER The Upper function converts the character values into uppercase letters. 3. INITCAP The Initcap function coverts the first character of each word into uppercase and the remaining characters into lowercase. . .
  • 10.
    Character-manipulation functions 1.CONCAT The Concatfunction coverts the first string with the second string 2. SUBSTR The Substr function returns specified characters from character value starting at position m and n characters long. If you omit n, all characters starting from position m to the end are returned.
  • 11.
    3.LENGTH The Length functionis used to find the number of characters in a string 4.RPAD The Rpad function pads the character value left-justified to a total width of n character positions. 5.TRIM The Trim function removes the leading or trailing or both the characters from a string.
  • 12.
    6.REPLACE The Replace functionis used to replace a character with another Character in a string.
  • 13.
    2) Numeric Functions: Numericfunctions accept numeric input and return numeric values. ROUND TRUNC Numeric functions
  • 14.
    3) Date Functions: Datefunctions operate on DATE. Date function MONTHS_BETWEEN ADD_MONTHS NEXT_DAY LAST_DAY
  • 15.
    Explicit data type conversion Datatype conversion Implicit data type conversion 4) Conversion Functions: Conversion functions convert a value from one datatype to another.
  • 16.
    EXAMPLE sql>create table stu1( namevarchar2(8), regno varchar2(10) mark number(6,2), DOB date ); Table created. SQL> desc stu1; Name Null? Type ----------------------------------------- -------- -------------- NAME VARCHAR2(8) REGNO VARCHAR2(10) DOB DATE Mark NUMBER
  • 17.
    SQL> insert intostuu2 values(&name,&regno,&dob,&mark); Enter value for name: 'xx' Enter value for regno: '13sms01' Enter value for dob: '27-apr-2013' Enter value for mark: 78.23 old 1: insert into stuu2 values(&name,&regno,&dob,&mark) new 1: insert into stuu2 values('xx','13sms01','27-apr- 2013',78.23) 1 row created.
  • 18.
    SQL> / Enter valuefor name: 'yy' Enter value for regno: '13sms02' Enter value for dob: '24-jan-2012' Enter value for mark: 89.78 old 1: insert into stuu2 values(&name,&regno,&dob,&mark) new 1: insert into stuu2 values('yy','13sms02','24-jan- 2012',89.78) 1 row created.
  • 19.
    SQL> select*from stu1; NAMEREGNO DATE MARK -------- ---------- ----------------- ------------------ xx 13sms01 27-apr-2013 78.23 yy 13sms02 24-jan-2012 89.78 CASE-MANIPULATION FUNCTION SQL> select 2 lower(name),upper(name),initcap(name) from stu1; LOWER(NA UPPER(NA INITCAP( -------- -------- -------- xx XX Xx yy YY Yy
  • 20.
    CHARACTER MANIPULATION FUNCTION SQL>select concat(name,regno), substr(regno,3,2), length(name), rpad(regno,10,'*')RPAD, lpad(regno,10,'*')LPAD, replace(regno,‘sms','ma')"replace”from stu1;; CONCAT(NAME,REGNO) SUB LENGTH(NAME) RPAD ------------------ -- ------------ ---------- ---------- -------------------- xx13sms01 sm 2 13sms01*** yy13sms02 sm 2 13sms02*** LPAD replace ---------- ---------- ***13sms01 13sms01 ***13sms02 13sms02
  • 21.
    NUMERIC FUNCTIONS SQL> selectround(mark,1), trunc(mark,1) from stu1; ROUND(MARK,1) TRUNC(MARK,1) ------------- ------------- 78.2 78 89.3 89
  • 22.
    DATE FUNCTION SQL> select add_months(dob,2), last_day(dob) fromstu1; ADD_MONTH LAST_DAY( --------- --------- 27-JUN-13 30-APR-13 20-MAR-12 31-JAN-12 27-JUN-13 30-APR-13 24-MAR-12 31-JAN-12
  • 23.
    Multiple-Row Functions Functions thattake a collection of values as input and return a single value. These functions are known as group functions and aggregate function. Types: 1.avg - Returns avg value of a given expression 2.Min - Returns Minimum value of a given expression 3.Max - Returns Maximum value of a given expression. 4.Sum - Returns total or sum of the expr. 5.count-Counts the no of values present in a column.
  • 24.
    EXAMPLE sql>create table stu2( majorvarchar2(10), semester varchar2(10) noofpapers number(2), ); Table created. SQL> desc stu2; Name Null? Type ----------------------------------------- -------- -------------- MAJOR VARCHAR2(10) SEMESTER VARCHAR2(10) NOOFPAPERS NUMBER
  • 25.
    SQL> insert intostu2 values(&major,&semester,&noofpapers); Enter value for name: ‘computer' Enter value for regno: ‘first’ Enter value for dob: 6 old 1: insert into stuu2 values(&major,&semester,&noofpapers) new 1: insert into stuu2 values(‘computer’,’first’,6) 1 row created. SQL> insert into stu2 values(&major,&semester,&noofpapers); Enter value for name: ‘computer' Enter value for regno: ‘second’ Enter value for dob: 5 old 1: insert into stuu2 values(&major,&semester,&noofpapers) new 1: insert into stuu2 values(‘computer’,’second’,5) 1 row created
  • 26.
    SQL> insert intostu2 values(&major,&semester,&noofpapers); Enter value for name: ‘history' Enter value for regno: ‘first’ Enter value for dob: 6 old 1: insert into stuu2 values(&major,&semester,&noofpapers) new 1: insert into stuu2 values(‘history’,’first’,6) 1 row created
  • 27.
    MULTIPLE ROW FUNCTION Sql>selectmajor,sum(noofpapers), count(noofpapers), avg(noofpapers) from stu2 group by major; MAJOR SUM(NOOFPAPERS) COUNT(NOOFPAPERS) AVG(NO -------- -------- -------- ----------- computer 11 2 5.5 history 6 2 3