Download presentation
Presentation is loading. Please wait.
Published byAllan Austin Modified over 9 years ago
1
User-defined Functions CSED421: Database Systems Labs
2
User-Defined Functions To provide functionality that is not available in SQL or SQL built-in functions PL/SQL (Procedural Language extension to SQL) Procedural language built in Oracle Support conditional (IF) statement, loop (WHILE, FOR) statement Procedure / Function
3
User-Defined Functions (cont.) Can appear in a SQL statement anywhere SQL functions can appear Select list of a SELECT statement Condition of a WHERE clause ORDER BY, and GROUP BY clauses VALUES clause of an INSERT statement SET clause of an UPDATE statement
4
RETURN Clause Every function must return a value Oracle SQL does not support calling of functions with boolean parameters of returns Design functions to return number (0 or 1) or strings (‘TRUE’ or ‘FALSE’) The data type cannot specify a length, precision, or scale
5
Syntax
6
Examples Variable declaration PL/SQL Block the same type as jobs.job_id
7
Examples Convert Celsius to Fahrenheit CREATE OR REPLACE FUNCTION CtoF (Celsius IN NUMBER) RETURN NUMBER IS BEGIN RETURN (Celsius * 1.8) + 32; END; /
8
Examples IF statements IF k=0 THEN result:=-1; ELSIF k=1 OR k=2 THEN result:=1; ELSE result:=0; END IF; WHILE statements WHILE k > 0 LOOP k := k – 1; END LOOP; create or replace function make_zero (k in number) return number is result number; begin result := k; while result > 0 loop result := result - 1; end loop; return result; end make_zero; /
9
Practice 1 “ORA-01476: divisor is equal to zero” 문제를 피해 가기 위한 나누기 함수를 생성하고 확인 함수명은 divide 로 생성 함수는 두 개의 숫자 (NUMBER) a, b 를 입력 받는다 b=0 이면 결과로 0 을 RETURN 한다 b!=0 이면 a/b 를 RETURN 한다 확인하는 방법 : (1) temp variable 선언, (2) execute 명령어를 사용 하여 divide function 을 실행, (3) print 명령어를 사용하여 출력
10
Practice 2 사원번호를 치면 department_name 을 출력하고 싶다. 출력하는 함수를 만드시오. 그리고 함수를 확인하기 위해 사원번호, 이름, 부서명을 출력하는 쿼리를 입력하시오. 주의 : return 타입으로 varchar2 를 사용, varchar2(20) 과 같 이 scale 을 정의 불가
11
Practice 3 10 진수를 16 진수 값으로 CONVERSION 하는 함수를 만 들고, 함수를 확인하기 위해 사원번호를 16 진수로 출력 하는 쿼리를 입력하시오 힌트 : 사용 가능한 built-in function 모듈로 연산 : 17 mod 16 버림 연산 : trunc(2.2) 숫자를 char 로 변환 : to_char(2) Concatenation: concat(‘abc’, ‘d’) 주의 : return 타입으로 varchar2 를 사용 varchar2(20) 과 같이 scale 을 정의 불가 EMPLOYEE_ID DECTOHEX(EMPLOYEE_ID) ------------------------------------- 10064 10165 10266 10367 10468 1076B 1247C 1418D 1428E 1438F 14490 14995 174AE 176B0 178B2 200C8 201C9 202CA 205CD 206CE 20 rows selected.
12
References Oracle Database Application Developer’s Guide - Fundamentals http://stanford.edu/dept/itss/docs/oracle/10g/appdev.101/b10 795/adfns_pc.htm#ADFNS009 http://stanford.edu/dept/itss/docs/oracle/10g/appdev.101/b10 795/adfns_pc.htm#ADFNS009 Oracle Database SQL Reference – CREATE FUNCTION http://stanford.edu/dept/itss/docs/oracle/10g/server.101/b107 59/statements_5009.htm#i2153260 http://stanford.edu/dept/itss/docs/oracle/10g/server.101/b107 59/statements_5009.htm#i2153260
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.