MYSql
Uma função é muito semelhante a um procedimento. Ambos aceitam argumentos, que podem ter qualquer modo. Ambos são formas diferentes de blocos de PL/SQL, com seções declarativas, executável e de exceções. Ambos podem ser armazenados na base de dados e declarados num bloco. (As funções e os procedimentos que não são armazenados na base de dados será analisados mais para frente conforme for descrevendo minhas colunas semanalmente). Porém , uma chamada de procedimento é uma instrução PL/SQL por si só, enquanto que uma chamada de função é chamada como parte de uma expressão.
Logo abaixo um exemplo de uma função que devolve TRUE se a turma especificada ultrapassar 90% da sua capacidade e FALSE em qualquer outra situação .
CREATE OR REPLACE FUNCTION RetornaEstudante ( p_Departamento classes.departmento%TYPE, p_Curso classes.curso%TYPE) RETURN BOOLEAN IS
v_numero_estudantes NUMBER; v_valor_maximo_estudantes NUMBER; v_RetornaValor BOOLEAN; v_Porcentual_Cheio CONSTANT NUMBER := 90;
BEGIN SELECT numero_estudantes, valor_maximo_estudantes INTO v_numero_Epl/sql studantes, v_valor_maximo_estudantes FROM classes WHERE departmento = p_Departmento AND curso = p_Course;
-- se classe cheia entao -- v_Porcentual_Cheio, retorna TRUE. Retorna falso em outra situacao.
IF (v_numero_estudantes / v_valor_maximo_estudantes * 100)> v_Porcentual_Cheio THEN v_RetornaValor := TRUE; ELSE v_RetornaValor := FALSE; END IF;
RETURN v_RetornaValor;
END RetornaEstudante;
/
A função RetornaEstudante devolve um valor booleano. Pode ser chamada a partir do bloco de PL/SQL seguinte. Observe que a chamada de função não é uma instrução por si só, e utilizada como parte da instrução IF dentro do ciclo.
DECLARE
CURSOR c_Classes IS - cursor to tipo c (c_classes) SELECT departmento, curso FROM classes;
BEGIN
FOR