Funções Definidas pelo Usuário

Documentos relacionados
BD II (SI 587) Procedimentos Armazenados

Oracle PL/SQL Overview

RECUPERAÇÃO DE CONTEÚDO BANCO DE DADOS

SQL Procedural. Josino Rodrigues Neto

UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ CIÊNCIA DA COMPUTAÇÃO CURSORS. Profº Erinaldo Sanches Nascimento

Oracle 10g: SQL e PL/SQL

Bancos de Dados I. Integridade semântica

Prof. Josenildo Silva

Logado no OracleXE vamos acessar a opção:

PL/SQL. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Laboratório de Bases de Dados PL/SQL

PL/pgSQL por Diversão e Lucro


FUNCTION ) RETURNS INTEGER AS $$ DECLARE

Projeto de Banco de Dados

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi

Laboratório de Banco de Dados Prof. Luiz Vivacqua. PL/pgSQL A Linguagem de programação do PostgreSQL

Bases de Dados 2012/2013 Funções/procedimentos e triggers. Helena Galhardas 2012 IST. Bibliografia. Manual referência PostgreSQL

Introdução às funções e procedimentos. SQL suporta funções e procedimentos úteis com tipos de dados específicos

Fundamentos de Programação ORACLE: SQL. Prof. Walter Gima

Banco de Dados PLPGSQL. Prof. Dr. Joel da Silva

Oracle Comandos para Processamento de Transações

IMPLEMENTAÇÃO DE BANCO DE DADOS

Auditoria de sistemas Deixe que seu banco de dados faça o trabalho por você

INE Banco de Dados II. Sumário

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

Motivação. Aplicações precisam acessar o BD Linguagens BD X Linguagens Programação. paradigmas diferentes (impedance mismatch)


António Rocha Nuno Melo e Castro

Material Teórico. Procedures, Functions, Exceptions e Triggers. Responsável pelo Conteúdo: Prof. Ms. Alexander Gobbato Albuquerque

Create Sequence Cria uma sequence. Uma sequence é um objeto que permite vários usuários gerarem valores inteiros sem repetição.

BCD29008 Banco de dados

Monitoria GDI Aula Prática. DML + PL/SQL parte 1

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

Sistemas de Informação

Linguagem SQL Restrições, Triggers e Views

Operação de União JOIN

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Banco de Dados I Introdução SQL

Stored Procedures e Triggers

Page 1. Prof. Constantino Jacob

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL DDL Criando Tabelas e Restrições

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Laboratório de Banco de Dados II Aula 1. Stored Procedures

Oracle 10g Dicas de PL/SQL. Conteúdo

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

GBC043 - Sistemas de Banco de Dados Funções e Gatilhos no PostgreSQL

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

MANUAL INSTALAÇÃO WEB SERVICE

FERRAMENTA DE APOIO A REESTRUTURAÇÃO DE CÓDIGO FONTE EM LINGUAGEM PL/SQL BASEADO EM PADRÕES DE LEGIBILIDADE

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

Funções em PostgreSQL

BDII SQL TRANSAÇÃO Revisão 2

DESENVOLVIMENTO DE SOFTWARE

Banco de Dados. Prof. Antonio

A linguagem SQL

Procedimentos armazenados

Banco de Dados SQL (Structured Query Language) Ana Paula Toome Wauke

O dono de uma livraria cuja base de dados é administrada por si pediu-lhe para efectuar as seguintes alterações ao preço dos livros:

PostgreSQL. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br

IEC Banco de Dados I Aula 11 Técnicas de Programação SQL

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Tarefa Orientada 17 Scripts

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

A linguagem SQL

Prof. Carlos Majer Aplicações Corporativas UNICID

Bases de Dados 2007/2008. Aula 8

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

Linguagem PL/SQL e Triggers

GES013 - Sistema de Banco de Dados Funções e Gatilhos no PostgreSQL

SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL

Especificação Genérica de Gatilhos e Procedimentos Armazenados para a Geração de Históricos de Dados

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

SQL Structured Query Language

Configurar o ODBC em ISE 2.3 com base de dados Oracle

Banco de Dados. Professora: Luciana Faria

Conceitos e aplicações em MySql. Nasair Júnior da Silva njunior@solis.coop.br. V Seminário de Desenvolvimento em Software Livre 1

Triggers no PostgreSQL

DESENVOLVIMENTO DE SOFTWARE

Controle de transações em SQL

Banco de Dados II. Triggers e Functions. Prof. Moser Fagundes. Curso TSI Instituto Federal Sul-Rio-Grandense (IFSul) Campus Charqueadas

Laboratório de Banco de Dados II Aula 04. Prof. Érick de Souza Carvalho

Bases de Dados. DDL Data Definition Language

Marcos Alexandruk Marcos Alexandruk

Configurar ISE 2.2 para a integração com server de MySQL


PostgreSQL 8.0. Diogo Biazus

Transcrição:

BD II (SI 587) Funções Definidas pelo Usuário Prof. Josenildo Silva jcsilva@ifma.edu.br

Funções definidas pelo usuário Funções precisam obrigatoriamente retornar um valor Somente aceitam parâmetros do tipo IN Podem ser utilizadas em cláusulas SQL (WHERE, ORDER BY, GROUP BY, etc)

Utilização Geralmente usadas para calcular alguma expressão ou fazer manipulação de valores simples Regras de negócio complexas são colocadas em procedures Não reinvente a roda Oracle, MySQL, PostegreSQL possuem um grande número de funções pré-definidas

Restrições Não podem conter instruções DDL (CREATE, ALTER, DROP) Não podem finalizar transações Aceitam e retornam somente tipos de dados SQL

Restrições Em geral, funções são chamadas a cada linha do resultado SQL Potencialmente onera a execução Talvez deva-se realizar este processamento na aplicação

Sintaxe (Padrão) CREATE FUNCTION <nome> (<params>) RETURNS <tipo de retorno> <declaracoes de variaveis locais> <corpo da funcao> ;

Funções no MySQL

Funções no MySQL Uma função é determinística se ela sempre retorna o mesmo resultado para os mesmos parâmetros de entrada, Não deterministica caso contrário. Esta informação é útil para o otimizador.

Exemplo de função no MySQL mysql> CREATE FUNCTION hello (s CHAR(20)) mysql> RETURNS CHAR(50) DETERMINISTIC -> RETURN CONCAT('Hello, ',s,'!'); Query OK, 0 rows affected (0.00 sec) mysql> SELECT hello('world'); +----------------+ hello('world') +----------------+ Hello, world! +----------------+

Exemplo MySQL: média de notas DELIMITER CREATE FUNCTION media (nome VARCHAR(10)) RETURNS FLOAT DETERMINISTIC BEGIN DECLARE n1,n2,n3,n4 INT; DECLARE med FLOAT; SELECT nota1,nota2,nota3,nota4 INTO n1, n2, n3, n4 FROM notas WHERE aluno = nome; SET med = (n1 + n2 + n3 + n4) / 4; RETURN med; END DELIMITER ; Para chamar esta função SELECT aluno, media(aluno) FROM notas; Fonte: http://ajuda.locaweb.com.br/pt-br/como_criar_functions_no_mysql_5.0

Exemplo MySQL: Função com cursores DELIMITER $$ CREATE FUNCTION fn_valortotalemestoque() RETURNS decimal(9,2) BEGIN DECLARE quantidade int(11) default 0; DECLARE valor decimal(9,2) default 0.0; DECLARE total_valor decimal(9,2) default 0.0; DECLARE done INT DEFAULT FALSE; # cursor para buscar os registros a serem processados # com quantidade > 0 DECLARE busca_estoque CURSOR FOR SELECT qtde, valor_unitario FROM estoque where qtde > 0; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

Exemplo MySQL: função com cursores SET total_valor = 0; # abre o cursor OPEN busca_estoque; # inicia o loop estoque: LOOP ## recebe o valor do percentual de cada vendedor FETCH busca_estoque INTO quantidade, valor; IF done THEN LEAVE estoque; END IF; SET total_valor = total_valor + (quantidade * valor); END LOOP estoque; # fecha o cursor CLOSE busca_estoque; RETURN total_valor; END $$ Para chamar esta função DELIMITER ; SELECT fn_valortotalemestoque();

Funções no Oracle

Funções no Oracle CREATE [OR REPLACE] FUNCTION <name> [ (par1 type1, par2 type2,...) ] RETURN <datatype> IS AS BEGIN... EXCEPTION... END <name>;

Funções no Oracle (parametro IN) CREATE OR REPLACE FUNCTION f_salary( p_id IN EMPLOYEES.EMPLOYEE_ID%TYPE) RETURN NUMBER IS v_sal EMPLOYEES.SALARY%TYPE; BEGIN SELECT SALARY INTO v_sal FROM EMPLOYEES WHERE EMPLOYEE_ID = p_id; RETURN v_sal*1.1; END f_salary;

Funções no Oracle -- Execucao 1: SELECT EMPLOYEE_ID,SALARY,f_salary(EMPLOYEE_ID) FROM EMPLOYEES; -- Execucao 2: DECLARE BEGIN END; sal NUMBER; sal := f_salary(176); DBMS_OUTPUT.PUT_LINE(' Salario com aumento de 10%: ' TO_CHAR(sal) );

Funções exemplo de restrição CREATE OR REPLACE FUNCTION F_DELETE( p_id IN EMPLOYEES.EMPLOYEE_ID%TYPE) RETURN NUMBER IS BEGIN DELETE EMPLOYEES WHERE EMPLOYEE_ID = p_id; COMMIT; RETURN TO_NUMBER(SQL%ROWCOUNT); END F_DELETE; -- Tentativa de execução SELECT LAST_NAME,F_DELETE(EMPLOYEE_ID) FROM EMPLOYEES

Leitura Adicional Seção 9.6 do SILBERSCHATZ: Funções e Procedimentos Tutorial sobre Procedimentos no MySQL por Wagner Bianchi. http://imasters.com.br/artigo/7556/mysql/ stored_procedures_no_mysql/ http://www.mysqltutorial.org/introductionto-sql-stored-procedures.aspx

Links interessantes http://dev.mysql.com/doc/refman/5.1/en/stored-routines.html http://www.mysqltutorial.org http://www.databasejournal.com/features/mysql/article.php/352 5581/MySQL-Stored-Procedures-Part-1.htm http://www.oficinadanet.com.br/artigo/2088/criando_stored_pro cedures_no_mysql http://www.brainbell.com/tutorials/mysql/using_stored_proced ures.htm