Stored Procedures com PostgreSQL: porque usar

Preview:

Citation preview

Atmos Maciel

● Ciência da Computação;● Delphi / SQLServer;● Programação Web;● Mundo Ágil;

O que é uma Stored Procedure?

Notação SQLServercreate procedure “procedurename“(

< parâmetro1 TIPO >, < parâmetro2 TIPO > ...)ASBEGIN

< declare @variavelRetorno; >< procedure_body >< RETORNO OPCIONAL(return @variavelRetorno) >

END;

GOexecute[exec] procedurename (param1, param2);

FUNCTIONS

Functions PostgreSQL● Funções escritas em SQL;● Funções em linguagens de procedimento(PL/pgSQL, PL/php,

PL/Java);● Funções internas( round(), count(), max(), avg() );● Funções na Linguagem C;

NotaçõesEm PHP:CREATE FUNCTION plphp_max(integer, integer) RETURNS integer AS $$

if ($args[0] > $args[1]) {return $args[0];

} else {return $args[1];

}$$ STRICT LANGUAGE 'plphp'

SELECT plphp_max(parameter0, parameter1);

Suporte a arrays PHP:

CREATE FUNCTION php_array() RETURNS text[ ][ ] AS $$

$return = array(array("Steven", "Klassen"),

array("Jonathan", "Daugherty"));

return $return;$$ LANGUAGE 'plphp';

SELECT php_array();

NotaçãoCREATE FUNCTION func_escopo() RETURNS integer AS $$DECLARE

quantidade integer := 30;BEGIN

quantidade := 50;< body_function >

DECLARE quantidade integer := 80;

BEGIN< body_function >

END;RETURN quantidade;END; $$ LANGUAGE plpgsql;SELECT func_escopo();

NotaçãoCREATE FUNCTION instr(varchar, integer) RETURNS integer AS $$DECLARE

v_string ALIAS FOR $1;index ALIAS FOR $2;

BEGIN< body_function>

END;

$$ LANGUAGE plpgsql;

Ambiente: Banco de Dados bem feito

Pesquisa

Treta que ainda existe….

Quando é interessante usar Functions no BD?

Linguagens diferentes

Reduz o código da aplicação

Reduz o código da aplicação

Ganho em processamento

Segurança

Performance?

O lado negro da Força...

Escalabilidade da Equipe

Dependência do SGBD

Sem suporte a OOP

Testes automatizados

Testes automatizados

O que se faz hoje?

Banco de Dados Aplicação

Equilibrar no Banco de Dados

Fim...