SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
Atmos Maciel
● Ciência da Computação;
● Delphi / SQLServer;
● Programação Web;
● Mundo Ágil;
O que é uma Stored Procedure?
Notação SQLServer
create procedure “procedurename“
(
< parâmetro1 TIPO >, < parâmetro2 TIPO > ...
)
AS
BEGIN
< declare @variavelRetorno; >
< procedure_body >
< RETORNO OPCIONAL(return @variavelRetorno) >
END;
GO
execute[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ções
Em 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ção
CREATE 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ção
CREATE 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...

Mais conteúdo relacionado

Mais procurados

Programação Estruturada 2 - Aula 04 - Código Fonte
Programação Estruturada 2 - Aula 04 - Código FonteProgramação Estruturada 2 - Aula 04 - Código Fonte
Programação Estruturada 2 - Aula 04 - Código Fontethomasdacosta
 
PrincipaiPrincipais Frameworks e Documentação
PrincipaiPrincipais Frameworks e DocumentaçãoPrincipaiPrincipais Frameworks e Documentação
PrincipaiPrincipais Frameworks e Documentaçãoelliando dias
 
Desenvolvimento de um CRUD utilizando Stored Procedure
Desenvolvimento de um CRUD utilizando Stored ProcedureDesenvolvimento de um CRUD utilizando Stored Procedure
Desenvolvimento de um CRUD utilizando Stored ProcedureFernando Roberto Proença
 
UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6Wagner Bianchi
 
PHP Aula 05 - E-mails, Cookies e Sessoes
PHP Aula 05 - E-mails, Cookies e SessoesPHP Aula 05 - E-mails, Cookies e Sessoes
PHP Aula 05 - E-mails, Cookies e SessoesDaniel Brandão
 
Conexões SSH com PHP
Conexões SSH com PHPConexões SSH com PHP
Conexões SSH com PHPFelipe Weckx
 
Struts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E LogStruts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E LogWaldir R. Pires Jr
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Fabrízio Mello
 
UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6Wagner Bianchi
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Willian Magalhães
 
Monitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosMonitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosEduardo Legatti
 
Testes nao funcionais 1
Testes nao funcionais 1Testes nao funcionais 1
Testes nao funcionais 1Nauber Gois
 

Mais procurados (20)

Programação Estruturada 2 - Aula 04 - Código Fonte
Programação Estruturada 2 - Aula 04 - Código FonteProgramação Estruturada 2 - Aula 04 - Código Fonte
Programação Estruturada 2 - Aula 04 - Código Fonte
 
Zope
ZopeZope
Zope
 
Jdbc e hibernate
Jdbc e hibernateJdbc e hibernate
Jdbc e hibernate
 
PrincipaiPrincipais Frameworks e Documentação
PrincipaiPrincipais Frameworks e DocumentaçãoPrincipaiPrincipais Frameworks e Documentação
PrincipaiPrincipais Frameworks e Documentação
 
Desenvolvimento de um CRUD utilizando Stored Procedure
Desenvolvimento de um CRUD utilizando Stored ProcedureDesenvolvimento de um CRUD utilizando Stored Procedure
Desenvolvimento de um CRUD utilizando Stored Procedure
 
UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6
 
PHP Aula 05 - E-mails, Cookies e Sessoes
PHP Aula 05 - E-mails, Cookies e SessoesPHP Aula 05 - E-mails, Cookies e Sessoes
PHP Aula 05 - E-mails, Cookies e Sessoes
 
Conexões SSH com PHP
Conexões SSH com PHPConexões SSH com PHP
Conexões SSH com PHP
 
Triggers no SQL Server
Triggers no SQL ServerTriggers no SQL Server
Triggers no SQL Server
 
Struts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E LogStruts Cap10 DepuraçãO E Log
Struts Cap10 DepuraçãO E Log
 
PHP 7
PHP 7PHP 7
PHP 7
 
Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012Oficina PostgreSQL Básico Latinoware 2012
Oficina PostgreSQL Básico Latinoware 2012
 
Método x closure
Método x closureMétodo x closure
Método x closure
 
UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6
 
Novidades do PostgreSQL 10
Novidades do  PostgreSQL 10Novidades do  PostgreSQL 10
Novidades do PostgreSQL 10
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
 
Monitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - NagiosMonitoramento de Serviços de Bancos de Dados - Nagios
Monitoramento de Serviços de Bancos de Dados - Nagios
 
Testes nao funcionais 1
Testes nao funcionais 1Testes nao funcionais 1
Testes nao funcionais 1
 
Hello SAFE World!!!
Hello SAFE World!!!Hello SAFE World!!!
Hello SAFE World!!!
 
Treinamento Oracle GoldenGate 19c
Treinamento Oracle GoldenGate 19cTreinamento Oracle GoldenGate 19c
Treinamento Oracle GoldenGate 19c
 

Semelhante a Stored Procedures com PostgreSQL: porque usar.

Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e SphinxElton Minetto
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitDiego Tremper
 
LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09Carlos Santos
 
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Luís Cobucci
 
Oracle Database 12c - Novas Características para DBAs e Desenvolvedores
Oracle Database 12c - Novas Características para DBAs e DesenvolvedoresOracle Database 12c - Novas Características para DBAs e Desenvolvedores
Oracle Database 12c - Novas Características para DBAs e DesenvolvedoresAlex Zaballa
 
Minicurso PostgreSQL
Minicurso PostgreSQLMinicurso PostgreSQL
Minicurso PostgreSQLDiogo Biazus
 
Desenvolvimento Rápido de Programas Linha de Comando
Desenvolvimento Rápido de Programas Linha de ComandoDesenvolvimento Rápido de Programas Linha de Comando
Desenvolvimento Rápido de Programas Linha de Comandogarux
 
PL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQLPL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQLJuliano Atanazio
 
Plsql - Conceitos Básicos
Plsql - Conceitos BásicosPlsql - Conceitos Básicos
Plsql - Conceitos BásicosDanilo Braga
 
PL/SQL - Conceitos Básicos
PL/SQL - Conceitos BásicosPL/SQL - Conceitos Básicos
PL/SQL - Conceitos BásicosDanilo Braga
 
T10_LM3: Subalgoritmos/funções (2013-2014)
T10_LM3: Subalgoritmos/funções (2013-2014)T10_LM3: Subalgoritmos/funções (2013-2014)
T10_LM3: Subalgoritmos/funções (2013-2014)Carlos Santos
 
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...PGDay Campinas
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
 

Semelhante a Stored Procedures com PostgreSQL: porque usar. (20)

Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Memcached, Gearman e Sphinx
Memcached, Gearman e SphinxMemcached, Gearman e Sphinx
Memcached, Gearman e Sphinx
 
Aula1
Aula1Aula1
Aula1
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnit
 
Ganhando tempo com casos de testes
Ganhando tempo com casos de testesGanhando tempo com casos de testes
Ganhando tempo com casos de testes
 
Sql proficiente
Sql proficienteSql proficiente
Sql proficiente
 
LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09LabMM3 - Aula teórica 09
LabMM3 - Aula teórica 09
 
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
 
Programação funcional no dia a dia
Programação funcional no dia a diaProgramação funcional no dia a dia
Programação funcional no dia a dia
 
Oracle Database 12c - Novas Características para DBAs e Desenvolvedores
Oracle Database 12c - Novas Características para DBAs e DesenvolvedoresOracle Database 12c - Novas Características para DBAs e Desenvolvedores
Oracle Database 12c - Novas Características para DBAs e Desenvolvedores
 
Minicurso PostgreSQL
Minicurso PostgreSQLMinicurso PostgreSQL
Minicurso PostgreSQL
 
Desenvolvimento Rápido de Programas Linha de Comando
Desenvolvimento Rápido de Programas Linha de ComandoDesenvolvimento Rápido de Programas Linha de Comando
Desenvolvimento Rápido de Programas Linha de Comando
 
PL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQLPL/Python: Programando em Python no PostgreSQL
PL/Python: Programando em Python no PostgreSQL
 
Plsql - Conceitos Básicos
Plsql - Conceitos BásicosPlsql - Conceitos Básicos
Plsql - Conceitos Básicos
 
Kernel cooperativo
Kernel cooperativoKernel cooperativo
Kernel cooperativo
 
PL/SQL - Conceitos Básicos
PL/SQL - Conceitos BásicosPL/SQL - Conceitos Básicos
PL/SQL - Conceitos Básicos
 
T10_LM3: Subalgoritmos/funções (2013-2014)
T10_LM3: Subalgoritmos/funções (2013-2014)T10_LM3: Subalgoritmos/funções (2013-2014)
T10_LM3: Subalgoritmos/funções (2013-2014)
 
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
 
Custo Execução Queries | Oracle | 2015
Custo Execução Queries | Oracle | 2015Custo Execução Queries | Oracle | 2015
Custo Execução Queries | Oracle | 2015
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 

Stored Procedures com PostgreSQL: porque usar.