Chapter 05 (Built-In SQL Functions) PDF
Chapter 05 (Built-In SQL Functions) PDF
Chapter 5
Type of Functions
Character Functions
returning character values
returning numeric values
Numeric Functions
Date Functions
Conversion Functions
Group Functions
Error Reporting
Other Functions
2
Character Functions
Returning Character Values
CHR
CONCAT
INITCAP
3
Examples
SELECT INITCAP('the soap') "Capitals" FROM DUAL;
Capitals
---------
The Soap
Job
------------------------------------------------------
Hall's job category is SA_REP
4
Character Functions
Returning Character Values
LOWER
LPAD
LTRIM
NLS_INITCAP
5
Examples
SHOW LPAD('Page 1',15,'*.')
*.*.*.*.*Page 1
6
Example
SELECT product_name, LTRIM(product_name, 'Monitor ') "Short
Name" FROM products WHERE product_name LIKE 'Monitor%';
8
Examples
SHOW RPAD('Morrison',12,'ab')
Morrisonabab
SELECT REPLACE('JACK and
JUE','J','BL') "Changes" FROM DUAL;
Changes
--------------
BLACK and BLUE
9
Character Functions
Returning Character Values
RTRIM
SOUNDEX
SUBSTR
SUBSTRB
TRANSLATE
UPPER
10
Examples
SHOW RTRIM('Last Wordxxyxy','xy')
Last Word
11
Character Functions
Returning Numeric Values
ASCII
INSTR
INSTRB
LENGTH
LENGTHB
12
Examples
SHOW INSTR('Corporate Floor','or', 3, 2)
14
13
Numeric Functions
ABS
ACOS
ASIN
ATAN
ATAN2
14
Numeric Functions
CEIL
COS
COSH
EXP
FLOOR
LN
15
Examples
SELECT order_total, CEIL(order_total) FROM orders
WHERE order_id = 2434;
ORDER_TOTAL CEIL(ORDER_TOTAL)
----------- -----------------
268651.8 268652
SELECT FLOOR(15.7) "Floor" FROM DUAL;
Floor
----------
15
16
Numeric Functions
LOG
MOD
POWER
ROUND
SIGN
SIN
17
Examples
SELECT MOD(11,4) "Modulus" FROM DUAL;
Modulus
----------
3
SELECT ROUND(15.193,1) "Round" FROM DUAL;
Round
----------
15.2
18
Numeric Functions
SINH
SQRT
TAN
TANH
TRUNC
19
Example
SELECT TRUNC(15.79,1) "Truncate"
FROM DUAL;
Truncate
----------
15.7
20
Date Functions
ADD_MONTHS
LAST_DAY
MONTHS_BETWEEN
NEW_TIME
NEXT_DAY
ROUND
SYSDATE
TRUNC
21
Examples
SELECT MONTHS_BETWEEN (TO_DATE('02-02-1995','MM-DD-
YYYY'), TO_DATE('01-01-1995','MM-DD-YYYY') ) "Months" FROM
DUAL;
Months
----------
1.03225806
22
Example
SELECT SYSDATE, LAST_DAY(SYSDATE)
"Last", LAST_DAY(SYSDATE) - SYSDATE
"Days Left" FROM DUAL;
23
Conversion Functions
CHARTOROWID
CONVERT
HEXTORAW
RAWTOHEX
ROWIDTOCHAR
24
Conversion Functions
TO_CHAR
TO_DATE
TO_LABEL
TO_MULTI_BYTE
TO_NUMBER
TO_SINGLE_BYTE
25
Examples
26
Group Functions
AVG
COUNT
GLB
LUB
27
Group Functions
MAX
MIN
STDDEV
SUM
VARIANCE
28
Error Reporting Functions
SQLCODE
SQLERRM
29
Other Functions
BFILENAME
DECODE
DUMP
GREATEST
GREATEST_LB
LEAST
30
Other Functions
LEAST_LB
NVL
UID
USER
USERENV
VSIZE
31
Agenda
Stored Procedures
Functions
Parameters
Calling Stored Procedures & Functions
Examples
32
Stored Procedures
Named PL/SQL blocks that
Are stored in the database
May have formal parameters
Can return more than one value to the calling
program
Can be called from
within other PL/SQL blocks as a PL/SQL statement by
itself
SQL> prompt
33
PL/SQL Block vs. Stored Procedures
34
Parameters
Parameters are optional
MUST be given a data type, but must NOT be given a
size
Parameters have 3 modes
IN
Read-only within procedure/function
Default mode (if mode is not explicitly specified)
OUT
Has an initial value of NULL within the procedure/function
Ignores any values that the actual parameters have when the
procedure/function is called
Can read from and write to
IN OUT
Value of actual parameters are passed into procedure/function
Can read from and write to 35
Stored Procedure with Parameters
CREATE OR REPLACE PROCEDURE X (
p_Parameter1 IN VARCHAR2,
p_Parameter2 IN NUMBER,
p_Parameter3 OUT VARCHAR2,
p_Parameter4 OUT NOCOPY NUMBER,
p_Parameter5 IN OUT NUMBER DEFAULT 1) AS
-- variable declaration
BEGIN
-- required executable
EXCEPTION
-- exception handling
END X;
/ 36
set serveroutput on
CREATE OR REPLACE PROCEDURE BoatReservations(p_Color IN VARCHAR2) AS
CURSOR c_Reservations IS
SELECT s.sname, r.day, r.bid
FROM Sailor s, Reserve r, Boat b
WHERE r.sid = s.sid
AND r.bid = b.bid
AND b.color = p_Color;
v_Reservation c_Reservations%ROWTYPE;
BEGIN
OPEN c_Reservations;
37
Functions
Named PL/SQL blocks that
Are stored in the database
May have formal parameters
MUST use the keyword RETURN to return only
one value
RETURN passes control back to the calling program
Required for functions
Can be called from
within other PL/SQL blocks as part of an expression
SQL> prompt
38
Stored Procedures vs. Functions
-- Variable that will contain the day that corresponds to the date parameter
v_CurrentDay VARCHAR2(9);
-- Variable that will contain the computed date of the next business day
v_NextDate DATE;
BEGIN
/*First, determine the corresponding name of the day for the date parameter. It will be used
later
to determine the number of days by which the date should be incremented.*/
v_CurrentDay := UPPER(TRIM(TO_CHAR(p_Date, 'DAY')));
/*Based upon the name of the day and the business rule, calculate the next business date*/
IF v_CurrentDay = 'FRIDAY' THEN
v_NextDate := p_Date + 3;
ELSIF v_CurrentDay = 'SATURDAY' THEN
v_NextDate := p_Date + 2;
ELSE
v_NextDate := p_Date + 1;
END IF;
-- Now, return the computed next business date to the calling program
RETURN v_NextDate;
END NextBusinessDate1; 40
/
TRIM and TO_CHAR functions
TRIM(string)
Removes leading and trailing blanks
TO_CHAR(date, ‘format’)
See Table 5-4 for a list of valid formats
The date field in the reservation table has been populated, but
the weekday field is NULL.
Write a query to populate the weekday field with the name of
the day that corresponds to the date specified in the date field.
UPDATE reservation SET weekday = TRIM(TO_CHAR(date,
‘DAY’));
NOTE: The ‘DAY’ format returns the name of the day with blanks
padded on the right such that the length is 9 characters.
41
Parameters
May be passed by value or by reference
IN by default, passed by reference
OUT by default, passed by value
IN OUT by default, passed by value
NOCOPY
A compiler hint to pass OUT & IN OUT parameters by
reference
Cannot use NOCOPY with IN parameters
Ex:
(P_outParameter IN OUT NOCOPY VARCHAR2) IS
42
Parameters
Formal parameters can have default values
Formal parameters with default values must appear as the
last items in the parameter list
43
Calling Stored Procedures &
Functions
With Parameters
Stored Procedure from SQL> prompt
CALL X(v_Variable1, …., v_VariableN);
OR CALL X(p_Parameter1 => v_Variable1,…);
EXEC X(v_Variable1,….,v_VariableN);
Stored Procedure from within PL/SQL block
EXECUTE IMMEDIATE ‘CALL X(……..)’; OR
X(v_Variable1,….,v_VariableN);
Function
Used in an expression
SELECT ElapsedDays(’01-JAN-1999’) FROM dual;
Without Parameters
If the stored procedure (or function) does not have parameters,
then do not use parentheses to define or call the stored procedure
(or function)
44