O documento discute linguagens procedurais para manipulação de bancos de dados relacionais, incluindo PL/SQL, stored procedures, stored functions e triggers. Também aborda tópicos como declaração de variáveis, estruturas de controle, cursores e programas PL/SQL como procedures e packages.
O documento descreve Jessé de Oliveira, um aluno de computação na UEPB que programa para a Rede Paraíba de Comunicação. Ele explica que PHP é uma linguagem para criação de sites dinâmicos que permite interação com usuários. Quando uma página PHP é requisitada, o servidor processa a página e retorna apenas o código HTML para o cliente. PHP é uma linguagem livre e portável que roda em diversos sistemas operacionais e é amplamente utilizada na internet.
O documento apresenta um resumo do Scilab 5.1.1, um software livre para cálculos numéricos. É dividido em capítulos que descrevem a interface gráfica, operações básicas, comandos de fluxo, vetores e matrizes, polinômios, listas, funções e gráficos. Inclui também um apêndice sobre equações diferenciais.
Este documento resume os principais conceitos de subprogramas, incluindo suas vantagens, tipos (procedimentos e funções), métodos de passagem de parâmetros e ambientes de referência local. Aborda definições básicas de subprogramas e explica os modelos de implementação da passagem de parâmetros, como passagem por valor, referência e nome.
1) O documento descreve a linguagem de programação Java, incluindo sua história, características e como criar e executar programas Java.
2) É apresentado um exemplo de programa "Olá Mundo" em Java com explicações passo a passo.
3) São fornecidas instruções sobre como instalar o kit de desenvolvimento Java da Sun e escrever documentação JavaDoc.
A linguagem UAL foi desenvolvida para auxiliar o aprendizado de programação de alunos iniciantes, permitindo a execução e visualização gráfica dos passos de um algoritmo. O documento descreve os principais recursos da linguagem, como declaração de variáveis, tipos de dados, operadores, comandos de entrada/saída, repetição e tomada de decisão. A linguagem está disponível gratuitamente e com código aberto para desenvolvimento.
O documento introduz conceitos básicos de lógica de programação, incluindo: 1) algoritmos transformam entradas em saídas através de ações; 2) pseudocódigo ajuda a comunicar algoritmos para máquinas; 3) estruturas de controle incluem sequencial, seleção e repetição.
Sebenta Ling Prog Cptig MóDulo Iii CarlaCarla Silva
1) O documento discute estruturas de controle em programação, incluindo instruções compostas, estruturas de decisão e repetição.
2) Estruturas de decisão incluem estruturas condicionais simples e compostas e estruturas de escolha múltipla.
3) Um exemplo mostra como usar uma estrutura de escolha múltipla para simular uma calculadora aritmética.
O documento descreve Jessé de Oliveira, um aluno de computação na UEPB que programa para a Rede Paraíba de Comunicação. Ele explica que PHP é uma linguagem para criação de sites dinâmicos que permite interação com usuários. Quando uma página PHP é requisitada, o servidor processa a página e retorna apenas o código HTML para o cliente. PHP é uma linguagem livre e portável que roda em diversos sistemas operacionais e é amplamente utilizada na internet.
O documento apresenta um resumo do Scilab 5.1.1, um software livre para cálculos numéricos. É dividido em capítulos que descrevem a interface gráfica, operações básicas, comandos de fluxo, vetores e matrizes, polinômios, listas, funções e gráficos. Inclui também um apêndice sobre equações diferenciais.
Este documento resume os principais conceitos de subprogramas, incluindo suas vantagens, tipos (procedimentos e funções), métodos de passagem de parâmetros e ambientes de referência local. Aborda definições básicas de subprogramas e explica os modelos de implementação da passagem de parâmetros, como passagem por valor, referência e nome.
1) O documento descreve a linguagem de programação Java, incluindo sua história, características e como criar e executar programas Java.
2) É apresentado um exemplo de programa "Olá Mundo" em Java com explicações passo a passo.
3) São fornecidas instruções sobre como instalar o kit de desenvolvimento Java da Sun e escrever documentação JavaDoc.
A linguagem UAL foi desenvolvida para auxiliar o aprendizado de programação de alunos iniciantes, permitindo a execução e visualização gráfica dos passos de um algoritmo. O documento descreve os principais recursos da linguagem, como declaração de variáveis, tipos de dados, operadores, comandos de entrada/saída, repetição e tomada de decisão. A linguagem está disponível gratuitamente e com código aberto para desenvolvimento.
O documento introduz conceitos básicos de lógica de programação, incluindo: 1) algoritmos transformam entradas em saídas através de ações; 2) pseudocódigo ajuda a comunicar algoritmos para máquinas; 3) estruturas de controle incluem sequencial, seleção e repetição.
Sebenta Ling Prog Cptig MóDulo Iii CarlaCarla Silva
1) O documento discute estruturas de controle em programação, incluindo instruções compostas, estruturas de decisão e repetição.
2) Estruturas de decisão incluem estruturas condicionais simples e compostas e estruturas de escolha múltipla.
3) Um exemplo mostra como usar uma estrutura de escolha múltipla para simular uma calculadora aritmética.
O documento apresenta um resumo sobre tópicos fundamentais da linguagem de programação C/C++, incluindo diretivas, variáveis, constantes, entrada e saída, estruturas de controle, vetores, matrizes, ponteiros, arquivos e conceitos orientados a objetos como classe e herança.
O documento apresenta um treinamento sobre SQL dividido em duas partes. Ele aborda diversos comandos e conceitos como agrupamento de dados, funções, ordenação, joins e subconsultas. Também explica conceitos básicos de banco de dados como SGBD, tabelas, chaves e a linguagem SQL.
Transformação conceitual para Lógico
Tabelas, Campos, Registros
Restrições de Integridade
Chaves Primaria / Estrangeira
SQL para Definição de dados: DDL
O documento discute a linguagem SQL e suas principais instruções para manipulação de dados em bancos de dados relacionais. Apresenta as instruções DML (INSERT, UPDATE, DELETE, SELECT) e suas cláusulas como WHERE, ORDER BY, GROUP BY e JOIN. Também explica funções agregadas como COUNT, SUM, AVG e o uso de alias para apelidar tabelas.
Algoritmo e Complexidade - texto Aula1.docxLdiaSilva39
1. Algoritmos são sequências de instruções para resolver problemas de forma precisa. Programas são algoritmos codificados em linguagens formais.
2. Funções modularizam algoritmos complexos em subprogramas menores com objetivos específicos. Isso traz benefícios como modularidade, reuso de código e legibilidade.
3. Estruturas de dados como vetores, matrizes e registros organizam dados de forma homogênea ou heterogênea. Ponteiros armazenam endereços de memória.
O documento apresenta uma introdução à linguagem PL/SQL, descrevendo suas principais características como a capacidade de combinar SQL e programação procedural, o uso de blocos, declaração de variáveis e constantes, cursores, estruturas de controle como condições e laços, subprogramas e pacotes.
O documento descreve os principais conceitos da linguagem de programação C++, incluindo variáveis, tipos de dados, operadores, estruturas condicionais e de repetição. É apresentada a sintaxe básica e exemplos de declaração de variáveis, uso de operadores, comandos if/else e laços for e while.
O documento fornece diretrizes sobre padrões de nomenclatura e boas práticas de programação em C# .NET, incluindo o uso de PascalCase para classes e métodos e CamelCase para variáveis e parâmetros, além de dicas como usar nomes significativos e comentários.
O documento apresenta uma introdução sobre SQL, incluindo sua história e partes. Descreve os comandos SQL para definição de dados, como CREATE, DROP e ALTER. Explica integridade de chaves, referencial e de domínio. Apresenta tipos de dados e índices. Por fim, solicita um exercício para criação de tabelas relacionais.
1. O documento apresenta 12 exemplos de blocos e funções PL/SQL para realizar diferentes tarefas, como imprimir tabuadas, verificar anos bissextos, calcular médias, consultar dados em tabelas e realizar conversões.
O documento introduz o software científico Scilab para computação numérica. Ele descreve os objetivos, conceitos básicos e ferramentas do Scilab, incluindo gráficos, álgebra linear, simulação, processamento de sinais e estatística. O documento também explica como usar a linha de comando, scripts e variáveis no Scilab.
1) O documento discute algoritmos estruturados, definindo algoritmos como uma descrição lógica dos passos para realizar uma tarefa e estruturando algoritmos usando sequência, seleção e repetição.
2) É apresentada uma linguagem de descrição de algoritmos com variáveis, operadores, entrada e saída de dados e outros elementos para modelar soluções de problemas computacionais.
3) São descritos algoritmos de pesquisa sequencial para localizar um elemento em um vetor.
Este documento introduz alguns conceitos fundamentais da linguagem de programação C, incluindo:
1) C é uma linguagem de programação de nível médio que permite a conversão direta para código de máquina. 2) A linguagem C suporta diferentes paradigmas de programação como imperativo e orientado a objetos. 3) Programas em C podem ser compilados ou interpretados.
1) O documento discute comandos condicionais e estruturas de controle em Java, incluindo estruturas if-else e switch-case.
2) Também aborda laços de repetição como for, while e do-while.
3) Por fim, apresenta exemplos de tratamento de exceções com try-catch-finally e exercícios relacionados a esses tópicos.
O documento descreve conceitos e definições relacionados a estruturas em C, incluindo:
1) Estruturas agrupam variáveis de diferentes tipos sob um único nome e são usadas para armazenar registros em arquivos;
2) A declaração de estruturas define os membros mas não aloca memória, enquanto variáveis de estrutura alocam memória;
3) Os membros de uma estrutura podem ser acessados usando o operador ponto ou seta.
O documento discute funções matemáticas e de string em Java, demonstrando suas principais funções como ceil(), floor(), max(), min() e sqrt() para matemática e length(), charAt(), toUpperCase() e substring() para strings. Exemplos de código são fornecidos para cada função. Exercícios sobre simulação de dados e cálculo de volumes são propostos no final.
Neste slide iniciamos a programação em C, apresentando a sintaxe, o escopo inicial para iniciar a programação utilizando a ferramenta DevC++ [Aula para curso técnico]
O documento discute modularização de algoritmos, dividindo problemas complexos em subproblemas menores através de funções e procedimentos. Apresenta exemplos de como criar, usar e compartilhar variáveis entre funções para resolver problemas de forma modularizada.
O documento discute o paradigma funcional de programação, apresentando conceitos como:
1) Linguagens funcionais onde variáveis não mudam de valor durante a execução;
2) Funções como valores de primeira classe que podem ser passadas como argumentos;
3) Uso de recursão para definição de funções.
TREINAMENTO PARA SOLUCIONAR PROBLEMAS COMPUTACIONAIS COM A LINGUAGEM DE PROGRAMAÇÃO C++
Funções.
Definição.
Passos para trabalhar com funções.
Implementação.
Exercício Resolvido.
Funções void.
O documento descreve o que são triggers no SQL, como são associados a tabelas específicas e executados automaticamente sempre que há modificações nos dados da tabela. Explica também que triggers não podem ser chamados diretamente e fazem parte da mesma transação que disparou sua execução. Fornece orientações sobre como criar triggers e como funcionam para inserções, exclusões e atualizações.
O documento apresenta um resumo sobre tópicos fundamentais da linguagem de programação C/C++, incluindo diretivas, variáveis, constantes, entrada e saída, estruturas de controle, vetores, matrizes, ponteiros, arquivos e conceitos orientados a objetos como classe e herança.
O documento apresenta um treinamento sobre SQL dividido em duas partes. Ele aborda diversos comandos e conceitos como agrupamento de dados, funções, ordenação, joins e subconsultas. Também explica conceitos básicos de banco de dados como SGBD, tabelas, chaves e a linguagem SQL.
Transformação conceitual para Lógico
Tabelas, Campos, Registros
Restrições de Integridade
Chaves Primaria / Estrangeira
SQL para Definição de dados: DDL
O documento discute a linguagem SQL e suas principais instruções para manipulação de dados em bancos de dados relacionais. Apresenta as instruções DML (INSERT, UPDATE, DELETE, SELECT) e suas cláusulas como WHERE, ORDER BY, GROUP BY e JOIN. Também explica funções agregadas como COUNT, SUM, AVG e o uso de alias para apelidar tabelas.
Algoritmo e Complexidade - texto Aula1.docxLdiaSilva39
1. Algoritmos são sequências de instruções para resolver problemas de forma precisa. Programas são algoritmos codificados em linguagens formais.
2. Funções modularizam algoritmos complexos em subprogramas menores com objetivos específicos. Isso traz benefícios como modularidade, reuso de código e legibilidade.
3. Estruturas de dados como vetores, matrizes e registros organizam dados de forma homogênea ou heterogênea. Ponteiros armazenam endereços de memória.
O documento apresenta uma introdução à linguagem PL/SQL, descrevendo suas principais características como a capacidade de combinar SQL e programação procedural, o uso de blocos, declaração de variáveis e constantes, cursores, estruturas de controle como condições e laços, subprogramas e pacotes.
O documento descreve os principais conceitos da linguagem de programação C++, incluindo variáveis, tipos de dados, operadores, estruturas condicionais e de repetição. É apresentada a sintaxe básica e exemplos de declaração de variáveis, uso de operadores, comandos if/else e laços for e while.
O documento fornece diretrizes sobre padrões de nomenclatura e boas práticas de programação em C# .NET, incluindo o uso de PascalCase para classes e métodos e CamelCase para variáveis e parâmetros, além de dicas como usar nomes significativos e comentários.
O documento apresenta uma introdução sobre SQL, incluindo sua história e partes. Descreve os comandos SQL para definição de dados, como CREATE, DROP e ALTER. Explica integridade de chaves, referencial e de domínio. Apresenta tipos de dados e índices. Por fim, solicita um exercício para criação de tabelas relacionais.
1. O documento apresenta 12 exemplos de blocos e funções PL/SQL para realizar diferentes tarefas, como imprimir tabuadas, verificar anos bissextos, calcular médias, consultar dados em tabelas e realizar conversões.
O documento introduz o software científico Scilab para computação numérica. Ele descreve os objetivos, conceitos básicos e ferramentas do Scilab, incluindo gráficos, álgebra linear, simulação, processamento de sinais e estatística. O documento também explica como usar a linha de comando, scripts e variáveis no Scilab.
1) O documento discute algoritmos estruturados, definindo algoritmos como uma descrição lógica dos passos para realizar uma tarefa e estruturando algoritmos usando sequência, seleção e repetição.
2) É apresentada uma linguagem de descrição de algoritmos com variáveis, operadores, entrada e saída de dados e outros elementos para modelar soluções de problemas computacionais.
3) São descritos algoritmos de pesquisa sequencial para localizar um elemento em um vetor.
Este documento introduz alguns conceitos fundamentais da linguagem de programação C, incluindo:
1) C é uma linguagem de programação de nível médio que permite a conversão direta para código de máquina. 2) A linguagem C suporta diferentes paradigmas de programação como imperativo e orientado a objetos. 3) Programas em C podem ser compilados ou interpretados.
1) O documento discute comandos condicionais e estruturas de controle em Java, incluindo estruturas if-else e switch-case.
2) Também aborda laços de repetição como for, while e do-while.
3) Por fim, apresenta exemplos de tratamento de exceções com try-catch-finally e exercícios relacionados a esses tópicos.
O documento descreve conceitos e definições relacionados a estruturas em C, incluindo:
1) Estruturas agrupam variáveis de diferentes tipos sob um único nome e são usadas para armazenar registros em arquivos;
2) A declaração de estruturas define os membros mas não aloca memória, enquanto variáveis de estrutura alocam memória;
3) Os membros de uma estrutura podem ser acessados usando o operador ponto ou seta.
O documento discute funções matemáticas e de string em Java, demonstrando suas principais funções como ceil(), floor(), max(), min() e sqrt() para matemática e length(), charAt(), toUpperCase() e substring() para strings. Exemplos de código são fornecidos para cada função. Exercícios sobre simulação de dados e cálculo de volumes são propostos no final.
Neste slide iniciamos a programação em C, apresentando a sintaxe, o escopo inicial para iniciar a programação utilizando a ferramenta DevC++ [Aula para curso técnico]
O documento discute modularização de algoritmos, dividindo problemas complexos em subproblemas menores através de funções e procedimentos. Apresenta exemplos de como criar, usar e compartilhar variáveis entre funções para resolver problemas de forma modularizada.
O documento discute o paradigma funcional de programação, apresentando conceitos como:
1) Linguagens funcionais onde variáveis não mudam de valor durante a execução;
2) Funções como valores de primeira classe que podem ser passadas como argumentos;
3) Uso de recursão para definição de funções.
TREINAMENTO PARA SOLUCIONAR PROBLEMAS COMPUTACIONAIS COM A LINGUAGEM DE PROGRAMAÇÃO C++
Funções.
Definição.
Passos para trabalhar com funções.
Implementação.
Exercício Resolvido.
Funções void.
O documento descreve o que são triggers no SQL, como são associados a tabelas específicas e executados automaticamente sempre que há modificações nos dados da tabela. Explica também que triggers não podem ser chamados diretamente e fazem parte da mesma transação que disparou sua execução. Fornece orientações sobre como criar triggers e como funcionam para inserções, exclusões e atualizações.
Triggers são objetos no banco de dados que são acionados por eventos como INSERT, UPDATE e DELETE em uma tabela. Eles podem ser definidos para rodar antes ou depois do evento e são usados para validações ou para atualizar outras tabelas quando há alterações de dados. Triggers podem acessar os valores antigos e novos dos registros afetados e executar múltiplas instruções SQL.
O documento descreve recursos avançados de bancos de dados relacionais como DDL e DML. Na parte I, é relembrado o DDL e apresentadas novidades como criação de domínios, índices, gatilhos, procedimentos, funções e visões. Na parte II, o foco é o DML, relembrando consultas SQL e apresentando cláusulas como BETWEEN, JOIN, GROUP BY e funções agregadas.
This document discusses MySQL multi-source replication, which enables a replication slave to receive transactions from multiple masters simultaneously. It provides configuration steps for setting up a MariaDB/Percona Server database as a multi-source replication slave, including ensuring unique server IDs and GTID domains for each master, defining replication connections, and enabling parallel replication threads to optimize transaction processing from multiple sources.
(1) O documento apresenta uma introdução à linguagem Java, abordando sua história, características da plataforma e fundamentos da linguagem como variáveis, operadores e estruturas condicionais;
(2) São apresentados conceitos como tipos primitivos, declaração de classes e variáveis, operadores unários, incremento/decremento e representação de sinal;
(3) O documento também explica conceitos importantes como escopo de variáveis e realiza um exercício prático para fixação dos conceitos apresentados.
O documento descreve a linguagem PL/SQL, que é uma extensão procedural do SQL desenvolvida pela Oracle Corporation para melhorar as capacidades do SQL. O PL/SQL permite a programação procedural no banco de dados Oracle e pode ser usado em ferramentas clientes como o Oracle Forms.
Este documento fornece uma introdução à linguagem C para microcontroladores PIC, abordando tópicos como comentários, diretivas de compilação, declaração de variáveis, constantes e atribuição de valores. O curso é dividido em três partes: introdução à linguagem C, implementação do compilador CCS e exemplos práticos de hardware e software.
Este documento fornece uma introdução à linguagem C para microcontroladores PIC, abordando tópicos como comentários, diretivas de compilação, declaração de variáveis, constantes e atribuição de valores. O curso é dividido em três partes: introdução à linguagem C, implementação do compilador CCS e exemplos práticos de hardware e software.
Este documento fornece um resumo de três frases ou menos do tutorial de SQL:
1. O tutorial apresenta os conceitos básicos de SQL e como manipular dados em bancos de dados relacionais através de instruções como SELECT, INSERT, UPDATE e DELETE.
2. Ele explica os tipos de dados comuns em bancos de dados e como adicionar, remover e atualizar registros em tabelas.
3. O documento também discute como realizar consultas em múltiplas tabelas relacionadas entre si através de chaves estrangeiras.
Este documento fornece um resumo de três frases ou menos do tutorial de SQL:
1. O tutorial apresenta os conceitos básicos de SQL e como manipular dados em bancos de dados relacionais através de instruções como SELECT, INSERT, UPDATE e DELETE.
2. Ele explica os tipos de dados comuns em bancos de dados e como adicionar, alterar e remover registros de uma tabela.
3. O documento também discute como realizar consultas em múltiplas tabelas relacionadas entre si através de chaves estrangeiras.
Este documento apresenta um módulo sobre linguagem SQL. Ele inclui tópicos como SQL básico, consultas complexas, triggers, views e modificações de esquema. O objetivo é apresentar os principais conceitos e construções de SQL e como as principais bases de dados abordam o assunto. 20% das questões de banco de dados em concursos envolvem SQL.
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6Wagner Bianchi
O documento fornece uma introdução abrangente sobre a linguagem SQL, incluindo suas principais subdivisões (DML, DDL, DCL, DTL), elementos e operadores. Também discute funções agregadas comuns.
1. O documento apresenta um manual de operação do ROBOTEC, um controlador de braço robótico e editor de algoritmos em português.
2. O ROBOTEC tem o objetivo de auxiliar o aprendizado de programação de alunos iniciantes através da execução e visualização de algoritmos que movimentam um braço robótico.
3. O manual descreve a estrutura básica dos programas, palavras-chave, tipos de dados, operadores, comandos condicionais e de repetição da linguagem do ROBOTEC.
Aula 15 da disciplina de Introdução a Ciência da Computação, ministrada pelo Departamento de Computação da Universidade Federal de Sergipe.
Apresenta os primeiros conceitos sobre a linguagem pascal.
O documento fornece uma introdução à linguagem de programação Java, descrevendo seus principais conceitos como identificadores, tipos de dados, operadores, declaração de variáveis, conversão de tipos, entrada de dados e exercícios de exemplo.
Este documento fornece uma introdução à linguagem SQL (Structured Query Language). Ele descreve o modelo relacional de dados, a definição da linguagem SQL e seus principais comandos para manipulação de dados, definição de esquemas e controle de acesso.
Este documento fornece uma introdução à linguagem SQL, incluindo sua história, propósito e principais comandos. Apresenta o modelo relacional de dados e discute os comandos CREATE TABLE, VIEWS e REGRAS DE INTEGRIDADE que garantem a consistência dos dados.
O documento discute os tipos de dados em programação, incluindo inteiros, reais, caracteres e lógicos. Variáveis armazenam dados na memória e precisam ser definidas antes do uso, incluindo nome, tipo e valor. Constantes são valores fixos também definidos no início do programa.
O documento discute os tipos de dados em programação, incluindo inteiros, reais, caracteres e lógicos. Variáveis armazenam dados na memória e precisam ser definidas antes do uso, incluindo nome, tipo e valor. Constantes são valores fixos também definidos no início do programa.
O documento discute os tipos de dados em programação, incluindo inteiros, reais, caracteres e lógicos. Variáveis armazenam dados na memória e precisam ser definidas antes do uso, incluindo nome, tipo e valor. Constantes são valores fixos também definidos no início do programa.
Processo de Desenvolvimento de Software - Linguagens Imperativas x DeclarativasNatanael Simões
Esta aula tem como objetivo mostrar como se diferem estruturalmente as linguagens imperativas das linguagens declarativas e como identificar suas características básicas
O documento discute conceitos básicos de algoritmos e programação, como:
- Definição de algoritmos, variáveis, tipos de dados, expressões e comandos;
- A linguagem Visualg para representação de algoritmos no ambiente de programação do mesmo nome;
- Operações básicas de entrada e saída de dados em Visualg.
O documento discute os conceitos de normalização de banco de dados, incluindo a primeira, segunda e terceira formas normais. Também descreve os principais componentes de bancos de dados relacionais como tabelas, linhas e colunas e como as tabelas se relacionam através de chaves. Finalmente, resume os principais tipos de linguagem SQL - DDL, DML, DCL e DQL.
Este certificado confirma que Gabriel de Mattos Faustino concluiu com sucesso um curso de 42 horas de Gestão Estratégica de TI - ITIL na Escola Virtual entre 19 de fevereiro de 2014 a 20 de fevereiro de 2014.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
3. PL/SQL
• PL/SQL
É uma ferramenta manipulação de dados do Oracle que pode
ser usada internamente (dentro do próprio Oracle) ou externamente
(nos aplicativos) de diversas maneiras.
• Tópicos de PL/SQL
- Trata-se de uma linguagem procedural (Procedural
Language/SQL) associada ao SQL.
- Associa as vantagens das linguagens de Terceira Geração
(Linguagens Procedurais como a linguagem C) com as de Quarta
Geração como o SQL.
- É uma linguagem estruturada bastante poderosa e de fácil
interação com a Base de Dados.
3
4. Sintaxe e Estrutura
• Sintaxe e Estrutura de PL/SQL
- Todos os scripts PL/SQL são compostos de comandos
procedurais ou comandos SQL.
- Blocos procedurais incluem declarações de variáveis,
chamada de procedimentos e construção de loops.
- Comandos SQL são usados para acessar a base de dados.
- A unidade básica de qualquer programa PL/SQL é chamada
de bloco.
4
5. BLOCOS PL/SQL
• Estrutura Básica de um Bloco PL/SQL
DECLARE
Seção de Declaração onde estão declarados:
- Variáveis PL/SQL
- Cursores
- Subprogramas Locais
BEGIN
Contém o conjunto de comandos que formam a seção
executável.
EXCEPTION
Área que contém os comandos de identificação de
erros e tratamento dos mesmos
END; 5
6. BLOCOS PL/SQL
• NOTAS:
- Somente a Área executável é essencial. As demais são
opcionais.
- O uso da Área de DECLARE é válida somente na
composição de triggers que serão vistos mais adiante.
- Nos Procedimentos, Funções e Packages palavra DECLARE
é substituída por AS ou IS.
- A área de Exception é utilizada para responder em tempo real
aos erros ocorridos na interação com a base de dados.
6
7. Identificadores PL/SQL
• Identificadores
São usados para nomear objetos como variáveis, cursores e
subprogramas.
• Regras
- No máximo pode ser composto por 30 caracteres.
- Não podem possuir espaços em branco.
- Devem iniciar sempre com uma letra.
- Caracteres especiais não podem ser usados.
7
8. Declaração de Variáveis
• Variáveis e Tipos
- As informações são transmitidas entre o PLSQL e a Base de
Dados através de variáveis.
- Uma variável é uma área de memória alocada que pode ser
lida pelo programa.
- Toda variável possui um tipo associado a ela.
- O tipo de variável definirá a gama de informações que ela
poderá armazenar.
Sintaxe de Declaração
nome_da_variável tipo [CONSTANT] [NOT NULL] [DEFAULT] [:=valor]
8
9. Declaração de Variáveis
• Exemplos:
DECLARE
v_curso1 NUMBER NOT NULL;
v_curso2 NUMBER NOT NULL := 1;
v_curso3 NUMBER DEFAULT :=1;
• Tipos de Variáveis PL/SQL
- Os tipos de variáveis existentes no PL/SQL são semelhantes
aos existentes no ORACLE na declaração das colunas das Tabelas.
- Existem algumas diferenças que podem causar problemas na
hora da programação.
- O PL/SQL permite a declaração de variáveis a partir dos
campos existentes numa tabela. 9
10. Declaração de Variáveis
• Number
Igual ao tipo NUMBER da Base de Dados.
Sintaxe:
NUMBER (P,S)
,onde P é a precisão e S a escala.
• Varchar2
Semelhante ao tipo na Base de Dados, porém seu tamanho
máximo é de 32767 bytes. No SQL é de 2000 bytes.
• Char
Semelhante ao tipo na Base de Dados, porém seu tamanho
máximo é de 32767 bytes. No SQL é de 255 bytes.
• Long
Semelhante ao tipo na Base de Dados, porém seu tamanho
máximo é de 32767 bytes. No SQL é de 2G bytes ou 65535 bytes
dependendo da versão. 10
11. Declaração de Variáveis
• Raw
Semelhante ao tipo na Base de Dados, porém seu tamanho
máximo é de 32767 bytes. No SQL é de 255 bytes.
• Long Raw
Semelhante ao tipo na Base de Dados, porém seu tamanho
máximo é de 32767 bytes. No SQL é de 2G bytes ou 65535 bytes
dependendo da versão.
• Date
• Boolean
Pode assumir como valores TRUE ou FALSE
11
12. Declaração de Variáveis
• Usando o Comando %TYPE
Define que a variável é do tipo do campo de uma tabela. É usado
quando uma variável recebe a informação de uma tabela. Assim o tipo
de variável será idêntica ao da coluna da tabela. Caso haja uma
mudança na tabela, não será necessário mudar o programa.
Exemplo:
DECLARE
v_SetorCod curso01.setor.SetorCod%TYPE
12
13. Escopo e Visibilidade de Variáveis
• Escopo de uma Variável
Escopo de uma variável é a porção do programa na qual uma
variável pode ser acessada.
A figura a seguir ilustra o escopo de uma variável
DECLARE
v_Number NUMBER (3);
{
BEGIN
V_Number
DECLARE
v_String VARCHAR2(10);
BEGIN
...
} V_String
END;
END;
• Temos indicado o escopo das variáveis v_Number e v_string. O
escopo é sempre finalizado por um END que termina o bloco básico.
13
14. Escopo e Visibilidade de Variáveis
• Visibilidade de uma Variável
É a porção do programa onde a variável pode ser acessada de forma
única sem ser sobreposta por outra variável de mesmo nome.
DECLARE
v_Number NUMBER (3);
v_String VARCHAR2 (40);
BEGIN
(1)
DECLARE
v_String VARCHAR2(10);
BEGIN
(2)
...
END;
(3)
END;
• A variável v_Number é visível e esta dentro do escopo em todo o programa
(nas regiões 1, 2 e 3). Já a variável v_String varchar(40) está dentro do
escopo nas regiões 1, 2 e 3, porém só é visível na região 1 e 3. Na região 2
passa a existir a variável v_String varchar2(10). 14
15. Conversão Entre Tipos de Dados
• Conversão entre tipos de dados
É possível convertermos todos os tipos de dados sem
restrições. A não ser pelas restrições de tamanho de dados. Não
pode-se, por exemplo, converter um CHAR(10) em um
VARCHAR(5).
Existem basicamente dois tipos de conversão:
a implícita e a explícita.
• Conversão Implícita
PL/SQL automaticamente, realiza a conversão entre tipos de
dados diferentes quando isso é possível.
15
16. Exemplo
• Exemplo:
DECLARE
V_String VARCHAR2(5);
BEGIN
SELECT campo_number
INTO V_string
FROM nome_da_tabela
WHERE codigo=1;
END;
• Conversão Explícita
Será vista adiante com as funções de conversão de dados.
16
17. Estruturas de Controle
• Estruturas de controle são as mais importantes extensões
de SQL do PL/SQL.
• Permite processar dados utilizado comando condicionais,
iterativos e com controle de fluxo.
– IF ... THEN ... ELSE ...
– FOR ... LOOP
– WHILE ... LOOP
– EXIT WHEN
17
18. Controle Condicional
IF ... THEN ...
• Forma mais simples de desvio condicional.
IF Condição THEN
seqüência de comandos;
ELSE
seqüência de comandos;
END IF;
• Exemplo 1:
IF salario < 1000 THEN
UPDATE funcionario SET salario = salario * 1,20;
ELSE
UPDATE funcionario SET salario = salario * 1,10;
END IF;
• Forma mais simplificada:
IF x > y THEN maior := x; END IF; 18
19. IF-THEN-ELSIF
• Desvio condicional para selecionar alternativas mutuamente exclusivas.
IF condição1 THEN
seqüência de comandos 1;
ELSIF condição2 THEN
seqüência de comandos 2;
ELSE
seqüência de comandos 3;
END IF;
• Exemplo:
BEGIN
...
IF vendas > 50000 THEN
bonus := 1500;
ELSIF vendas > 35000 THEN
bonus := 500;
ELSE
bonus := 100;
END IF;
INSERT INTO pagamento VALUES (matricula, bonus, ...);
END; 19
20. Controle Interativo
LOOP
-- sequência de comandos
END LOOP;
Executa um laço infinito.
Ex.:
LOOP
...
IF Qtde_Produto > 10 THEN
...
EXIT; -- abandona o laço *
END IF;
END LOOP;
* Este comando pode ser utilizado somente para abandonar um laço
20
21. EXIT WHEN
• Este comando permite abandonar um laço se um processamento for
impossível ou indesejável.
• Quando se encontra o comando EXIT a cláusula WHEN é avaliada.
• Se o resultado for verdadeiro o laço é abandonado.
Exemplo:
LOOP
...
total := total + salario;
EXIT WHEN total > 25000; -- sai do laço se esta
-- condição for satisfeita
END LOOP;
21
22. WHILE ... LOOP
• Associa uma condição com um seqüência de comandos. Antes de
cada iteração do laço a condição é avaliada.
• Se a condição resultar em verdadeiro o conjunto de comandos do laço
é executado e novamente avaliada a condição.
• Se a condição for FALSA ou NULA o laço é ignorado e o controle
passa para o próximo comando.
• No exemplo a seguir, pode-se encontrar o primeiro empregado que
possui um salário maior que 4000 e possui posição superior de
comando que o empregado 7902.
22
23. WHILE ... LOOP
Exemplo
DECLARE
salario emp.sal%TYPE;
matricula emp.mat%TYPE;
nome emp.nome%TYPE;
mat_inicial CONSTANT NUMBER(4) := 7902;
BEGIN
SELECT sal, mat
INTO salario, matricula
FROM emp
WHERE matricula = mat_inicial;
WHILE salario < 4000 LOOP
SELECT sal, mat, nome
INTO salario, matricula, nome
FROM emp WHERE mat = matricula;
END LOOP;
INSERT INTO historico VALUES
(NULL, salario, nome);
COMMIT;
END; 23
24. Laço FOR
FOR counter IN [REVERSE] min..máx LOOP
comandos;
END LOOP;
Dentro de um laço FOR, o valor do contador pode ser utilizado para as
operações necessárias mas não pode receber atribuições.
FOR ctr IN 1..10 LOOP
...
IF NOT finished THEN
INSERT INTO ... VALUES (ctr, ...); -- certo
factor := ctr * 2; -- certo
ELSE
ctr := 10; -- ERRADO
END IF;
END LOOP;
24
25. CURSORES - PL/SQL
• O Oracle usa áreas de trabalho para executar comandos SQL e
armazenar a informação processada.
• Um cursor é uma área de trabalho nomeada.
• Cursor implícito declara uma área de trabalho para todos os comandos
SQL de manipulação de dados, inclusive para as consultas que
retornam somente uma linha.
• Para consultas que retornam mais de uma linha, pode-se
explicitamente declarar um cursor para processar cada linha
individualmente.
DECLARE
CURSOR c1 IS
SELECT mat, nome, cargo FROM emp
WHERE nu_depto = 20;
25
26. Manipulando Cursores
• Um programa PL/SQL abre um cursor, processa as linhas resultantes
de uma consulta e finalmente o fecha.
• Como um ponteiro de arquivo, um cursor marca a posição corrente
em um arquivo aberto.
• O comando OPEN executa a consulta associada a um cursor,
identifica o resultado e posiciona o ponteiro para o primeiro registro.
• O comando FETCH retorna o registro corrente e avança o ponteiro
para o próximo registro.
• Quando o último registro for processando, o comando CLOSE
desabilita o cursor.
26
27. Abrindo uma Variável Cursor
• OPEN-FOR associa uma variável cursor com uma
consulta.
OPEN (cursor_variable_name ) FOR select_statement;
Ex.
IF NOT emp_cv%ISOPEN THEN
/* Abre uma variável cursor */
OPEN emp_cv FOR SELECT * FROM emp;
END IF;
• Atributos que possuem uma variável do tipo cursor.
%FOUND,
%NOTFOUND
%ISOPEN
%ROWCOUNT
• Para abrir a mesma variável para uma outra consulta deve-
27
se primeiro fechar a variável.
28. Percorrendo uma Variável Cursor
• O comando FETCH retorna uma linha de cada vez e atualiza o
ponteiro para o próximo registro.
FETCH (cursor_variable_name)
INTO (variable_name[, variable_name]... | record_name);
LOOP
/* Percorrendo o cursor */
FETCH emp_cv INTO emp_rec;
-- Abandona o laço no último registro da consulta.
EXIT WHEN emp_cv%NOTFOUND;
....
END LOOP;
• Para cada coluna da variável cursor deve existir uma variável
compatível correspondente na cláusula INTO.
• O número de colunas deve ser igual ao número de variáveis. 28
29. Fechando uma Variável Cursor
• O comando CLOSE desabilita a variável.
CLOSE ( cursor_variable_name );
LOOP
FETCH emp_cv INTO emp_rec;
EXIT WHEN emp_cv%NOTFOUND;
...
END LOOP;
/* Fechando a variável */
CLOSE emp_cv;
29
30. Programas PL/SQL
• Objetos de Blocos PL/SQL
- Um Bloco PL/SQL pode ser criado como um objeto
ORACLE.
- Sendo o bloco PL/SQL um objeto, ele estará
armazenado na Base de Dados e poderá ser chamado
por outros programas.
- Os Blocos PL/SQL podem ser criados como
procedures, funções, packages e triggers.
30
31. Procedures
• Procedimentos
- Procedimentos e funções PLSQL podem ser definidos como
subprogramas se compararmos com as linguagens de terceira geração.
- Quando um procedimento é criado, este fica armazenado na
Base de Dados na sua forma executável, para que possa ser usado,
eventualmente, por outro bloco PL/SQL.
- Quando um procedimento é chamado pode receber parâmetros
do bloco PL/SQL que o chamou.
- Um procedimento não pode ser chamado como parte de uma
expressão. Quando um procedimento é chamado o controle passa a
primeira linha de comando executável do mesmo. Ele retornará ao
bloco PLSQL de origem ao terminar sua execução.
31
32. Procedures
• Sintaxe.
CREATE [OR REPLACE] PROCEDURE procedure_name
[(argument [{IN | OUT | IN OUT}] type,
...
argument [{IN | OUT | IN OUT}] type)] {IS | AS}
procedure body
• Cláusulas
procedure_name - nome do procedimento a ser criado.
or replace - se já existir um procedimento com esse nome este
será derrubado para que o novo procedimento possa ser criado. Caso
seja omitida esta cláusula o Oracle não permitirá a criação do
procedimento se o se ele já existir com o mesmo nome.
argument - São os parâmetros de entrada e saída que podem ser
usados pelo procedimento.
32
33. Procedures
• Exemplo:
CREATE OR REPLACE PROCEDURE PcInsereSetor
(p_SetorCodNr IN Setor.SetorCodNr%TYPE,
p_SetorNomeVc IN Setor.SetorNomeVc%TYPE)
AS
BEGIN
INSERT INTO Setor (SetorCodNr ,SetorNomeVc)
VALUES
(p_SetorCodNr ,p_SetorNomeVc);
COMMIT;
END;
O procedimento acima pode ser executado da seguinte maneira:
BEGIN
PcInsereSetor( ‘3’, ‘Departamento de Vendas’);
END;
ou,
SQL> EXEC PcInsereSetor( ‘3’, ‘Departamento de Vendas’);
33
34. Procedures
• Argumentos do Procedimento
Os argumentos de um procedimento podem ser classificados como
parâmetros de entrada, saída ou entrada e saída.
Exemplo:
CREATE OR REPLACE PROCEDURE PcTesteParametros
( p_InParametro IN number,
p_OutParametro OUT number,
p_InOutParametro IN OUT number) AS
BEGIN
...
END;
• Argumentos do Tipo IN
O parâmetro é recebido pelo procedimento dentro do argumento
do tipo IN. Este parâmetro não poderá ser modificado, pois ele pode ser
usado apenas para a leitura.
34
35. Procedures
• Argumentos do Tipo OUT
Qualquer valor passado na chamada do procedimento para
argumentos do tipo OUT é ignorado. Este parâmetro é somente de
escrita, ou seja, não é possível atribuir valor a outras variáveis a partir
deste parâmetro. Quando o procedimento termina, este retorna ao
bloco PL/SQL que o chamou atualizando a variável do bloco com o
valor passado pelo procedimento.
• Argumentos do Tipo IN OUT
Como o próprio nome diz é uma combinação dos argumentos do
tipo IN, OUT, ou seja, o parâmetro recebido servirá para escrita ou
leitura. Ao retornar ao bloco PL/SQL que o chamou, atualiza a variável
do bloco com o valor passado pelo procedimento.
35
36. Procedures
• Exemplos:
CREATE OR REPLACE PROCEDURE PcTesteParametros
( p_InParametro IN number,
p_OutParametro OUT number,
p_InOutParametro IN OUT number) AS
v_VariávelLocal NUMBER;
BEGIN
v_VariávelLocal := p_InParametro; --Legal
p_InParametro := 7; -- Ilegal
v_VariávelLocal := p_OutParametro; -- Ilegal
p_OutParametro := 7; -- Legal
v_VariávelLocal := p_InOutParametro; -- Legal
p_InOutParametro := 7; -- Legal
END;
36
37. Notas
- Parâmetros IN sempre do lado esquerdo
- Parâmetros OUT sempre do lado direito
- Parâmetros IN OUT e OUT deverão sempre ter uma variável
correspondente no bloco PL/SQL que chamou o procedimento.
Exemplo:
DECLARE
v_variavel1 NUMBER;
v_variavel2 NUMBER;
BEGIN
PcTesteParametros(3, v_variavel1, v_variavel2);
END;
37
38. Procedures
• Restrições nos Argumentos dos Procedimentos.
Na declaração dos argumentos não podemos especificar o
tamanho dos parâmetros.
Exemplo:
CREATE OR REPLACE PROCEDURE PcTesteParametros
( p_InParametro IN NUMBER (12), -- Ilegal
p_OutParametro OUT NUMBER) ...
38
39. Procedures
• O tamanho do parâmetro de entrada é referenciado com o tamanho da
variável correspondente no bloco PL/SQL que chamou o procedimento.
Exemplo:
CREATE OR REPLACE PROCEDURE PcTesteParametros
( p_InParametro IN OUT VARCHAR2) AS
BEGIN
...
END;
Executando o procedimento:
DECLARE p_InParametro será um
v_variavel1 VARCHAR2(10); VACHAR2 (10)
BEGIN
PcTesteParametros(v_variavel1);
END;
39
40. Funções
• Funções
- Funções são muito similares a procedimentos.
- Possuem os mesmos tipos de argumentos e restrições.
- Uma função deve retornar um valor
• Sintaxe.
CREATE [OR REPLACE] FUNCTION function_name
[(argument [{IN}] type,
...
argument [{IN}] type)]
RETURN return_type {IS | AS}
function_body
40
41. Funções
• Cláusulas
function_name - nome da função a ser criada.
OR REPLACE - se já existir uma função com esse nome esta
será derrubada para que a nova função possa ser criada.
argument e type - similares aos dos procedimentos
RETURN - O tipo do valor que a função irá retornar. Dentro do
corpo da função, o comando RETURN é usado para retornar o
controle para o bloco PL/SQL que chamou a função.
41
42. Exemplo
CREATE OR REPLACE FUNCTION RetornaCodigo RETURN NUMBER
AS
v_FuncCod NUMBER;
BEGIN
SELECT sequencia.NEXTVAL into v_FuncCod from DUAL
RETURN v_FuncCod;
END;
42
43. Funções
CREATE OR REPLACE FUNCTION RetornaTipoSalario (p_FuncCod IN
NUMBER) RETURN VARCHAR2
AS
v_FuncSalario NUMBER;
BEGIN
SELECT FuncSalarioNr INTO v_FuncSalario FROM Funcionario WHERE
FuncCodNr = p_FuncCod ;
IF v_FuncSalario <= 100 THEN
RETURN ‘Salário Muito Baixo’;
ELSIF v_FuncSalario <= 500 THEN
RETURN ‘Salário Baixo’;
ELSIF v_FuncSalario <= 1000 THEN
RETURN ‘Salário um Pouco Baixo’;
ELSE
RETURN ‘Salário Razoável’;
END IF;
END RetornaTipoSalario;
43
44. Triggers
• Triggers (Gatilhos)
- Triggers são similares a procedimentos, onde possuem áreas de
declaração, execução e tratamento de erros.
- Procedimentos são executados explicitamente por outro bloco. Um
trigger é executado implicitamente sempre que um evento de
disparo ocorre.
- Os eventos de disparo que podem chamar um trigger são:
INSERT, UPDATE ou DELETE
• Uso de Triggers
- Para elaborar restrições de integridade complexas impossíveis de
serem geradas na criação das tabelas.
- Para registrar informações diversas sobre modificações de tabelas.
- Para sinalizar outros programas sobre as modificações ocorridas.
44
45. Triggers
• Sintaxe
CREATE OR REPLACE TRIGGER trigger_name
{BEFORE | AFTER} triggering_event ON nome_tabela
[FOR EACH ROW [WHEN trigger_condition]]
trigger_body;
• Cláusulas
trigger_name - nome do trigger.
triggering_event - especifica quando o trigger será disparado.
nome_tabela - nome da tabela na qual será usado o gatilho.
trigger_condition - se estiver presente será validada primeiro.
O trigger só é executado se a condição retornar TRUE.
45
46. Triggers
• Exemplo: Um trigger que garante que o nome do funcionário e
o seu endereço sempre serão inseridos em letras maiúsculas.
CREATE TRIGGER trgcurso
BEFORE
INSERT OR UPDATE
ON funcionario
FOR EACH ROW
BEGIN
:new.FuncNome:=upper(:new. FuncNome);
:new.FuncEnder:=upper(:new. FuncEnder);
END;
46
47. Triggers
Cláusula BEFORE/AFTER
• São cláusulas obrigatórias que especificam quando deve
ser disparado o gatilho.
• Deve ser declarado antes do corpo do código.
• No exemplo anterior, o código do gatilho deve ser disparado
antes das operações especificadas.
47
48. Triggers
Comandos de gatilho: DELETE, INSERT e UPDATE.
• Um, dois ou todos os três comandos podem ser incluídos na
especificação do gatilho.
• Deve ser definida uma única tabela associada com um gatilho. Não
pode ser uma visão (VIEW).
• Para o exemplo anterior, qualquer um dos comandos abaixo ativará o
gatilho.
DELETE FROM funcionario;
INSERT INTO funcionario VALUES ( . . . );
INSERT INTO funcionario SELECT . . . FROM . . . ;
UPDATE funcionario SET . . . ;
• Se um gatilho especifica a atualização de uma lista de colunas, então o
gatilho será disparado somente se alguma coluna desta lista for
alterada.
... BEFORE DELETE OR INSERT OR UPDATE OF funcnome ON funcionario ...
48
49. Triggers
Cláusula FOR EACH ROW
• Determina se o gatilho é de linha ou um gatilho de comando.
• Se for especificado FOR EACH ROW, o gatilho é ativado sempre para
cada linha da tabela que é afetada pela definição do gatilho.
• A ausência desta cláusula significa que um gatilho é ativado somente
uma vez para cada comando aplicável, mas não separadamente para
linha afetada pelo comando.
CREATE TRIGGER log_salary_increase
AFTER UPDATE ON emp
FOR EACH ROW
WHEN (:new.sal > 1000)
BEGIN
INSERT INTO emp_log (emp_id, log_date, new_salary, action)
VALUES (:new.empno, SYSDATE, :new.sal, 'NEW SAL');
END;
49
50. Exemplo
Com o comando abaixo:
• UPDATE emp SET sal = sal + 1000.0
WHERE deptno = 20;
• Se existirem 5 funcionários no departamento 20, o gatilho será
disparado 5 vezes, pois 5 linhas serão afetadas.
• O gatilho abaixo será disparado uma única vez, para cada atualização
na tabela EMP.
CREATE TRIGGER log_emp_update
AFTER UPDATE ON emp
BEGIN
INSERT INTO emp_log (log_date, action)
VALUES (SYSDATE, 'EMP COMMISSIONS CHANGED');
END;
50
51. Triggers
Cláusula: WHEN
• Pode-se definir um gatilho restrito a uma definição
especificada para uma expressão booleana SQL na
cláusula WHEN.
• Quando definida esta cláusula, a expressão é avaliada
para cada linha afetada pelo gatilho.
• Se a expressão retornar VERDADEIRA (true) para uma
linha, o gatilho será ativado para a linha.
• Se a expressão retornar FALSA (false) ou Não
VERDADEIRA (null) para a linha, o gatilho não será
ativado para a linha
51
52. Triggers
Corpo do Gatilho
• O corpo do gatilho é um bloco PL/SQL que pode conter comandos
SQL e/ou PL/SQL.
• Serão executados sempre que os comandos forem disparados e as
restrições, desde que especificadas, forem satisfeitas.
• Para gatilhos de linha existem alguns predicados especiais.
INSERTING, DELETING e UPDATING.
• No corpo de um gatilho de linha, o comando PL/SQL pode acessar os
valores novos e antigos do registro corrente afetados pelo gatilho.
• Duas palavras chaves são utilizadas para cada coluna que esta sendo
modificada.
OLD para o valor antigo
NEW para o novo valor
• Dependendo do tipo de comando de gatilho, certos nomes não tem
significado.
52
53. Triggers
• Um gatilho ativado com um comando INSERT pode acessar somente a
coluna NEW, pois não existe valor antigo.
• Um gatilho para o comando UPDATE pode acessar o valor NEW e OLD
tanto para a cláusula BEFORE e AFTER de cada linha.
• Um gatilho ativado com um comando DELETE pode acessar somente a
coluna.
• Ex.
IF :new.sal > 10000 . . .
IF :new.sal < :old.sal . . .
• O valor NEW pode ser mudado quando utilizado com a cláusula
BEFORE.
• Se uma cláusula BEFORE muda o valor de NEW.COLUNA um gatilho
associado à cláusula AFTER é disparado no mesmo comando. 53
54. Exercícios
1) Criar as tabelas: Funcionario
Matricula Numérico 5 dígitos Chave primária
Nome Varchar2 30 dígitos
DataNasc Date
DataAdm Date
Salario Numérico 8 dígitos
inteiros e 2 dígitos
decimais
Relatório
Relcodnr Numérico 8 dígitos Chave primária
Matricula Numérico 5 dígitos Chave estrangeira da
tabela Funcionário
(Matricula)
Reldescrvc Caracter 100 dígitos
Relobsvc Caracter 50 dígitos
Reldatadt data
54
55. Exercícios
2) Crie um procedimento que acrescente 30% ao salário de todos os
funcionários que foram admitidos após 01-01-2007.
3) Crie um procedimento que recebe a matrícula do funcionário e retorne
o nome e o seu respectivo salário. Faça um programa chamador para
este procedimento.
55
56. Exercícios
4) Crie uma função onde o parâmetro de entrada é o código do
funcionário, e que retorne como parâmetro (de saída) as seguintes
mensagens:
mensagens condição
Tem salário menor que $200 Funcionário nessa faixa salarial
Tem salário maior que $300 Funcionário nessa faixa salarial
Tem salário entre $200 e $300 Funcionário nessa faixa salarial
56
57. Exercícios
5) Crie uma função onde o parâmetro de entrada é o código do funcionário, e
que retorne como parâmetro (de saída) as seguintes mensagens:
mensagens condição
Tem menos de 20 anos Funcionário com menos de 20 anos
Tem mais de 40 anos Funcionário com mais de 40 anos
Tem entre 20 e 40 anos Funcionários entre 20 e 40 anos
6) Crie um procedimento (usando as funções anteriores) e que insira os
seguintes dados na tabela relatório:
Relcodnr Numérico sequencial
Matricula Código do funcionário
Reldescrvc O funcionário “nome_do_funcionário”
“mensagem_1” e “mensagem_2”
Reldatadt Data do sistema
Onde:
mensagem_1= mensagem retornada pela função do exercício 2
mensagem_2=mensagem retornada pela função do exercício 3
57
58. Exercícios
7) Crie um procedimento que seja ativado automaticamente quando uma
operação de delete ocorrer na tabela Funcionario. Esse procedimento
deverá registrar em uma tabela Hist_Funcionario o usuário que está
executando a operação e a data.
58