Funções II

CREATE or replace FUNCTION somar(integer, integer) RETURNS integer AS $$
    SELECT $1 + $2;
$$ LANGUAGE SQL;

SELECT somar(1, 2) AS resposta;

CREATE or replace FUNCTION somar(val1 integer, val2 integer) RETURNS integer AS $$
    SELECT val1 + val2;
$$ LANGUAGE SQL;

SELECT somar(8, 6) AS resposta;

A SQL PL é uma linguagem estrutural estendida da SQL que tem por objetivo auxiliar as tarefas de programação no PostgreSQL. Ela incorpora à SQL características procedurais, como os benefícios e facilidades de controle de fluxo de programas que as melhores linguagens possuem. Por exemplo loops estruturados (for, while) e controle de decisão (if then else).

PL/PGSQL

CREATE OR REPLACE FUNCTION nome (integer, integer)
RETURNS varchar
AS $$
DECLARE
v1 integer;
BEGIN
v1 := $1+$2;
RETURN 'Resultado da soma é ' || v1;
END;
$$ LANGUAGE 'plpgsql';

CREATE OR REPLACE FUNCTION remover_dados (integer)
RETURNS varchar
AS $$
DECLARE
msg varchar;
BEGIN
DELETE FROM curso where id = $1;
msg := 'Removido com sucesso';
RETURN msg;
END;
$$ LANGUAGE 'plpgsql';

Condicionais

A instrução "if" é a estrutura de teste mais básica, ela é encontrada em todas as linguagens (com sintaxes diferentes...). Ela executa uma série de instruções caso uma condição se realize.

Estrutura de seleção (expressão condicional ou ainda construção condicional) é, na ciência da computação, uma estrutura de desvio do fluxo de controle presente em linguagens de programação que realiza diferentes computações ou ações dependendo se a seleção (ou condição) é verdadeira ou falsa, em que a expressão é processada e transformada em um valor booleano.

A condição "se-então(-senão)" é uma estrutura de seleção comum em diversas linguagens de programação. Sua estrutura básica é a seguinte:

Se (condição) Então
    (bloco de código)
Senão
    (bloco de código)
Fim Se
IF v_id_usuario <> 0 THEN
    UPDATE usuarios SET email = v_email WHERE id_usuario = v_id_usuario;
END IF;

CREATE OR REPLACE FUNCTION verificavaor (numero integer) RETURNS varchar
AS $$
DECLARE
resultado varchar;
BEGIN
IF numero = 0 THEN
    resultado := 'zero';
ELSIF numero > 0 THEN
    resultado := 'positivo';
ELSIF numero < 0 THEN
    resultado := 'negativo';
ELSE
    resultado := 'NULL';
END IF;
return resultado;
END;
$$ LANGUAGE 'plpgsql';

CREATE OR REPLACE FUNCTION new (integer, integer, varchar)
RETURNS varchar
AS $$
DECLARE
v1 integer;
msg varchar;
BEGIN
if $3 = '+' then
    v1 := $1+$2;
    msg := 'Resultado da soma é ' || v1;

 

elsif $3 = '/' then
    v1 := $1/$2;
    msg := 'Resultado da divisão é ' || v1;
elsif $3 = '-' then
    v1 := $1-$2;
    msg := 'Resultado da subtração é ' || v1;
elsif $3 = '*' then
    v1 := $1*$2;
    msg := 'Resultado da multiplicação é ' || v1;
end if;
RETURN msg;
END;
$$ LANGUAGE 'plpgsql';

CREATE OR REPLACE FUNCTION remover_dados (integer)
RETURNS varchar
AS $$
DECLARE
msg varchar;
BEGIN
if $1 >0 then
DELETE FROM curso where id = $1;
msg := 'Removido com sucesso';
END IF;
RETURN msg;
END;
$$ LANGUAGE 'plpgsql';

Made with Slides.com