P. 1
Apostila Completa Oracle 9i

Apostila Completa Oracle 9i

4.0

|Views: 3,585|Likes:
Published by Willian

More info:

Published by: Willian on Jul 22, 2009
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

11/30/2012

pdf

text

original

Uma função é bem semelhante a uma procedure (parametros, seções, etc.), entretanto
uma chamada de procedure é uma instrução PL/SQL por si própria, enquanto uma
chamada de função é chamada como parte de uma expressão. Por exemplo, as seguintes
funções retornam TRUE se a classe especificada estiver cheia em 80% ou mais e
FALSE caso contrário:

CREATE OR REPLACE FUNCTION AlmostFull (
p_Department classes.department%TYPE,
p_Course classes.course%TYPE)
RETURN BOOLEAN IS

v_CurrentStudents NUMBER;
v_MaxStudents NUMBER;
v_ReturnValue BOOLEAN;
v_FullPercent CONSTANT NUMBER := 80;

BEGIN

-- Get the current and maximum students for the requested
-- course.
SELECT current_students, max_students
INTO v_CurrentStudents, v_MaxStudents
FROM classes
WHERE department = p_Department
AND course = p_Course;

-- If the class is more full than the percentage given by
-- v_FullPercent, return TRUE. Otherwise, return FALSE.
IF (v_CurrentStudents / v_MaxStudents * 100) >=
v_FullPercent THEN
v_ReturnValue := TRUE;

ELSE

v_ReturnValue := FALSE;

END IF;

RETURN v_ReturnValue;
END AlmostFull;

A função retorna um valor booleano. Ela pode ser chamada a partir do bloco

PL/SQL, por exemplo:

DECLARE

CURSOR c_Classes IS

102

SELECT department, course
FROM classes;

BEGIN

FOR v_ClassRecord IN c_Classes LOOP
-- Output all the classes which don't have very much room
IF AlmostFull(v_ClassRecord.department,
v_ClassRecord.course) THEN
DBMS_OUTPUT.PUT_LINE(v_ClassRecord.department || ' ' ||
v_ClassRecord.course || ' is almost full!');

END IF;
END LOOP;

END;

A sintaxe da função é bem semelhante à sintaxe para uma procedure:

CREATE [OR REPLACE] FUNCTION nome_de_função
[(argumento [{IN | OUT| IN OUT}] tipo)] ,
...
argumento [{IN | OUT| IN OUT}] tipo)]
RETURN tipo_de_retorno {IS |AS}
corpo_da_função

onde nome_de_função é o nome da função, argumento e o tipo são os mesmos das
procedures, tipo_de_retorno é o tipo do valor que a função retorna (requerido) e corpo-
_da_função
é um bloco PL/SQL contendo o código da função. Assim como ocorre com as
procedures, a lista de argumentos é opcional. O tipo da função é utilizado para determinar o
tipo de expressão que contém a chamada de função.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->