17 de abril de 2012

Procenge. Tecnologia da Informação que se renova.


A Procenge é uma empresa brasileira de Tecnologia da Informação com atuação focada no esenvolvimento de softwares de gestão e na prestação de serviços de uso e manutenção desses sistemas. A expertise acumulada, desde a década de 1970, proporcionou inovação e evolução constantes na busca das melhores soluções para os seus clientes. São projetos voltados para os mercados público e privado de todo o País, que facilitam a gestão e o desenvolvimento de cada negócio, sustentavelmente, melhorando o controle das operações e reduzindo perdas.

Com soluções aplicáveis a diversos setores, a Procenge desenvolve e implanta sistemas de gestão administrativa, comercial e de apoio à tomada de decisão, complementados por tecnologia embarcada para gestão de frotas, localização e comunicação remota. No seu portfólio também estão softwares com tecnologia de sensoriamento remoto para acompanhamento da cultura, colheita e transporte de canade-
açúcar. Destacam-se como seus principais produtos o ERP Pirâmide – software de gestão empresarial, o AgroGIS – sistema para apontamento e monitoramento agrícola e o AcquaGIS – sistema de gestão do consumo por telemetria, acompanhamento de serviços e gestão do atendimento, aplicável a empresas de Utilities.

Inovação, tecnologia de ponta e processos bem estruturados estão agregados aos produtos e serviços da Procenge, garantindo melhor custo-benefício para empresas de pequeno, médio e grande porte. Atualmente são mais de 500 empresas clientes de diversos setores, em todos os estados brasileiros, entre elas grandes indústrias como as multinacionais EMC e Sappel; das companhias de saneamento, CASAL (AL), Compesa
(PE), ADA (AM), EMBASA (BA), CAGEPA (PB), CAERD (RO) e CASAN (SC) e das empresas do setor de gás: Mitsui Gás e Energia, Sergás (SE), COPERGÁS (PE) e ALGÁS (AL). No segmento de Saúde Suplementar a Procenge fornece tecnologia para mais de cem empresas, com destaque para as cooperativas Unimed. Além dessas, atende também a grandes grupos do setor Sucroenergético, como ETH Bioenergia (Grupo Odebrecht) e Guarani.

A empresa está instalada no Porto Digital de Pernambuco, um dos maiores centros tecnológicos do Brasil, localizado na cidade do Recife, e possui duas filiais, em São Paulo-SP e Maceió-AL. A gestão corporativa da Procenge é estruturada seguindo as normas de qualidade da ISO 9001:2008 e os processos operacionais de sua fábrica de software estão certificados no nível de maturidade CMMI 2 e MPS.BR F. A empresa também conta com um escritório de projetos (PMO) e profissionais certificados em gerência de projetos pelo PMI (Project Management Institute), o que confere alto grau de qualidade aos seus serviços.

11 de abril de 2012

Revisão da 1ª Avaliação de Computação Gráfica


Exercício - Revisão 1ª Unidade [enviado pelo professor]

Defina as seguintes áreas da computação gráfica.
Análise de imagem.
Consiste na geração de dados a partir de uma imagem.

Processamento de imagem.
Consiste em transformar uma imagem ou transformar dados.

Síntese de imagem.
Consiste na geração de imagem através de dados.

Do que são compostas as imagens digitais? (explique)
As imagens digitais são compostas de Matiz, Saturação e intensidade ou luminosidade.
Matiz: Medida do comprimento de onda dominante (mede a frequência dominante da vibração luminosa) Saturação: Medida da pureza da cor.
Intensidade ou luminosidade: Medida de energia luminosa, onde o preto indica a ausência de energia.

Qual é o sistema de cores utilizado pelos computadores e qual a relação entre ele e o sistema de visão humana?
O sistema de cores usadas pelos computadores é o RGB (Red, Green, Blue), essas cores tem relação direta com os sensores do sistema visual humano, que identificam essas três faixas diferentes de cores. No qual o ser humano ver realmente a combinação dessas três cores básicas.

Qual a diferença entre os sistemas aditivos e subtrativos. Cite quais são e explique brevemente como funciona a composição das cores em cada um dos sistemas.
O sistema aditivo controla a intensidade (emissão de luz) da geração de três cores básicas, sendo elas o vermelho, azul e verde (RGB).
Já o sistema subtrativo funciona na mistura de pigmentos que absorvem as cores e refletem outras. As cores fundamentais são Ciano, Margenta e Amarelo (CMY).

O que são Primitivas vetoriais?
Primitivas são os elementos básicos que formam um desenho.
As primitivas vetoriais são associadas a um conjunto de atributos que define sua aparência e a um conjunto de dados que define sua geometria.

Que atributos podem ser associados às primitivas vetoriais?
O ponto pode ter cor; A linha pode ter espessura, cor, traço.

Cite vantagens e desvantagens na utilização de imagens vetoriais.
Vantagens: Facilidade de armazenamento dos elementos geométricos; Facilidade de manipulação (escala, rotação, etc.); Alteração simples.
Desvantagem: Requer dispositivos de saída específicos para ter bons resultados.

Cite vantagens e desvantagens na utilização das imagens matriciais.
Vantagens: Fácil tradução para dispositivos baseados em pontos (monitores, impressoras, etc.); Fácil armazenamento e leitura; Valores dos pixels podem ser alterados individualmente ou em grupo.
Desvantagens: Imagens podem ser muito grandes; Dificuldade em realizar operações de escala.

Qual a diferença entre Rasterização e Vetorização (explique).
Rasterização: conversão de um arquivo vetorial para o formato matricial.
Vetorização: conversão de um arquivo matricial para o formato vetorial.

Defina as seguintes etapas de um sistema de visão computacional
Segmentação: Procura isolar regiões de pontos da imagem pertencentes a objetos para posterior extração de atributos e calculo de parâmetros.
Classificação e reconhecimento: Faz a distinção de imagens e objetos segmentados. Onde o objeto é reconhecido através de 2 passos, o primeiro consiste em receber informações sobre o objeto que deve ser reconhecido e a segunda é a apresentação de objetos para serem reconhecidos. Na classificação pode ter ou não intervenção humana, dependendo do seu grau de complexidade.
Restauração e Realce: Tem por objetivo destacar detalhes da imagem.
Aquisição da Imagem: A aquisição de imagem é conseguida através da iluminação sobre um objeto que por sua vez absorve, transmite e reflete.
Decisão: Indagações a respeito dos parâmetros extraídos.
Extração de atributos/características: Extrai dados relevantes (atributos, objetos).

Adição de vetores e matrizes.
[39 45] + [64 53] = [103 98]

Subtração de vetores e matrizes.
[72 27] – [99 66] = [-27 -39]

Multiplicação de vetores e matrizes.
[2 5]x[19 52]=[2x19+5x68 2x52+5x35]=[38+340 104+175]=[378 279]
[4 7]  [68 35]=[4x19+7x68 4x52+7x35]  [76+476 208+245]  [552 453]

Onde pode ser aplicado tratamento e a melhoria das imagens?
Medicina, Controle de Qualidade, Biologia, Sistemas de Monitoração e Controle (segurança), Geologia, Sensoriamento Remoto (imagens de satélites), Meteorologia, etc.

Do que são compostas as imagens digitais? (explique)
Composta por um conjunto de pontos (matriz de pontos), denominados "Pixels" (Picture Elements) ou "Dots".
Onde os pixels formam uma matriz de pontos que são dispostos na tela do computador que é denominada de "Bit-Map" ou "Mapa de Bits".
Já o Mapa de bits é cada elemento da matriz que possui uma informação referente à cor associada aquele ponto específico.

Como se dá a percepção de cores do olho humano?
Através de uma combinação linear, onde cada cor é expressa como soma ponderada das cores básicas, que são três Red, Green e Blue.

Qual é o sistema de cores utilizado pelos computadores (monitores)?
Usualmente o sistema RGB (Red-Green-Blue) que é sistema aditivo, onde controla a intensidade da geração das três cores básicas- primárias aditivas.

Quais são as cores fundamentais do sistema subtrativo e como elas se comportam quando misturadas?
Cores fundamentais são Ciano, Margenta e Amarelo (CMY). E quando misturadas formam-se novas cores.

Cite dispositivos gráficos de entrada e de saída.
Entrada: Mesa Digitalizadora, Tablet, Joysticks, Luvas, Scanners Tridimensionais, Roupa de RV, entre outros.
Saída: Plotters, Cave, Display de retina, entre outros.

Resumo de todo conteúdo!

Qual a definição para Computação Gráfica?
Um conjunto de ferramentas e técnicas para converter dados para ou de um dispositivo gráfico através do computador.

O que podemos fazer com a imagem na computação gráfica?
A imagem pode ser transformada, adquirida ou gerada.

O que é Síntese de Imagens?
Criação de imagens a partir de representações geométricas ou matriciais, ou também chamada de Visualização Científica (Dados são usados para gerar a imagem).

O que Processamento de Imagens?
Processamento da imagens para obter transformações, tal como o realce ou a modificação.
Figura inicial > processamento > resultado

O que é Análise de Imagens?
Processa uma imagem e a partir desta obter informações analíticas como números, modelos matemáticos e afins (Dados são originados de informações adquiridas da imagem).

Como é feito a análise e síntese da imagem?
Síntese: dados para analisar > processamento > figura
Análise: dados para analisar < processamento < figura

Qual o primeiro sistema de CG?
SAGE (Semi-Automatic Ground Environment) foi o primeiro com conversão de imagens capturadas por um radar em imagem.

Quais as subáreas da CG?
Modelagem de Dados; Visualização (computação gráfica, síntese de imagem); Visão (análise de imagem); Processamento de imagens.

O que é Percepção Tridimensional?
Entender a forma como compreendemos a profundidade em imagens bidimensionais.

Quais os estímulos visuais?
Informações Monoculares;
Informações Óculo-Motoras;
Informações Estereoscópicas.

O que é Informações Monoculares?
São Informações obtidas através da imagem formada na retina a partir de um único dispositivo ocular;

Quais as Informações Monoculares?
Perspectiva; Oclusão; Conhecimento prévio do objeto; Densidade das Texturas; Variação da Reflexão da Luz; Sombras;

O que é Perspectiva?
Resultado da aparente diminuição do tamanho dos objetos quando o observador se distancia do mesmo.

O que é Oclusão?
Responsável pela posição relativa dos objetos, chamado também de interposição. Noção de profundidade na obstrução de objetos.

O que é Conhecimento prévio do objeto?
Imagens conhecidas pelo observador no mundo real, onde o mesmo traz referências de profundidade.

O que são Informações Óculo-Motoras?
São Informações fornecidas pelo movimento dos olhos através dos músculos do globo ocular.

Quais as Informações Óculo-Motoras?
Acomodação: alteração do foco dos objetos projetados na retina através da mudança do formato do cristalino (observar um objeto muito próximo ou muito distante).
Convergência: grau de rotação dos olhos ao longo do eixo de visão para focar um objeto. Por exemplo, a observação do próprio nariz.

Quais as Informações Estereoscópicas?
Visão de uma imagem diferente por cada olho, chamado de disparidade ocular. O cérebro pode processar as duas imagens e obter a noção de tamanho e profundidade. Este é o princípio de percepção tridimensional.

O que é Representação Vetorial?
É a representação através de vetores, os quais são segmentos de reta orientados, partindo da origem do sistema de coordenadas a um ponto determinado, tendo direção, sentido e comprimento.

O que é Representação Matricial?
É a representação da imagem através de matrizes, onde cada célula representa um pixel (picture element) de um sistema de cores.

O que são Sistemas Gráficos?
É Conjunto de dispositivos que possibilitam a entrada e saída de informações gráficas. Que são classificados em Dispositivos gráficos de entrada/saída.

VISÃO COMPUTACIONAL

Qual a sequência tradicional para sistemas de Visão Computacional?
(Aquisição / Digitalização) >pixels> (Restauração / realce) >pixels> (Segmentação) >grupo de pixels> (Extração de Atributos / Características) >dados> (Classificação / Reconhecimento) >grupo de dados> (Decisão)

Descreva as seguintes etapas de um sistema de Visão Computacional:
Aquisição da Imagem.
A luz incide sobro o objeto, que por sua vez absorve, transmite e reflete parte dessa luz, que é captada por um dispositivo de imagem, onde o mais utilizado é a câmera CCD, que possui uma matriz de células semicondutoras fotossensíveis, que armazenam a carga elétrica emitida pela luz. Nessa aquisição da imagem podem ser influenciado por diversos fatores, tais como, objeto em movimento, superfície do objeto, iluminação, tamanho e a distância do objeto ao dispositivo de captação da imagem.

Restauração e Realce
A restauração visa corrigir as distorções sofridas pela imagem, geradas normalmente pela limitação dos sistemas de aquisição de imagem e o realce, visa enfatizar alguma característica de interesse na imagem.

Segmentação
Tem por objetivo isolar áreas da imagem para uma posterior extração, aquisição de atributos e cálculos de parâmetros. Por meio da Separação por tom de corte (fundo e objeto).

Extração de atributos/características
É um processo que consiste em garimpar informações de uma imagem e como sabemos, uma imagem é formada por modelos matemáticos como matrizes e estas contêm características que podem ser matematicamente identificadas. Onde os Atributos mais comuns são: número total de objetos, dimensões, geometria, propriedades luminosas, texturas.

Classificação e reconhecimento
É o ato de distinguir os objetos na imagem agrupando em parâmetros de acordo com sua semelhança para cada região de pixels encontrada. Onde compara as suas características com as dos objetos das classes previamente estabelecidas / classes padrão.

Decisão
Tem por objetivo tomar decisões a partir da extração de informações do mundo real (análise das imagens), ou seja, a mineração de dados para a localização de padrões. Com isso a tomada de decisão pode ser feita a partir de inferências simples a respeito de parâmetros extraídos dos objetos ou de algoritmos mais complexos de Inteligência Computacional.

Quais as etapas do Processo de extração do conhecimento?
Banco de Dados > Pré-processamento > Extração de características > identificação > Interpretação e avaliação > conhecimento.


A IMAGEM
REPRESENTAÇÃO DIGITAL DE IMAGENS

Tratamento e análise de imagens.

Processamento de Imagens
É a manipulação e exibição de imagens pronta, que envolve processos de tratamento da imagem e processos que permitam a interface entre dispositivos de entrada e saída gráfica e o arquivo de imagem.
Não possui como fim a geração de uma imagem a partir de dados, mas a manipulação de uma imagem previamente gerada e até possivelmente a extração de informações a partir desta imagem.

Quais as aplicações?
Tratamento e melhoria de imagens.
Medicina, Controle de Qualidade, Biologia, Sistemas de Monitoração e Controle (segurança), Geologia, Sensoriamento Remoto (imagens de satélites), Meteorologia, etc.
Reconhecimento e classificação de objetos presentes em uma imagem
Sistemas de segurança (impressões digitais), interpretação automática de textos, visão artificial, robótica, exploração automatizada (sistemas anti-bombas, exploração submarina, mísseis teleguiados), etc.

Como é formada a Imagem?
Composta por um conjunto de pontos (matriz de pontos), denominados "Pixels" (Picture Elements) ou "Dots".

O que são Pixels?
São dispostos na tela do computador formando uma matriz de pontos que é denominada de "Bit-Map" ou "Mapa de Bits".

Mapa de bits.
Reticulado - cada elemento da matriz possui uma informação referente à cor associada aquele ponto específico.


Resolução da imagem.
Número de elementos que a imagem possui na horizontal e na vertical.

O que é resolução espacial da visão?
Medem quantos pontos (pixels) diferentes o olho pode distinguir em uma imagem.

Qual o Campo visual humano?
Matriz de 3.000 x 3.000 pixels.

Qual a resolução de uma Televisão comum?
512 x 480 pixels.

Qual a resolução da Televisão de alta definição (HDTV)
2.000 x 1.100 pixels

Resolução de Computadores PC
Resolução determinada pelo modo gráfico escolhido – dentro do limite estabelecido, valores comuns: 640 x 480, 800 x 600 e 1024 x 768.

Qual a Razão de aspecto do monitor?
4/3 – computadores e televisão comum e 2 (aproximadamente) para cinema e HDTV.

Qual a quantidade de bits requerida por um pixel?
Depende principalmente da representação adotada para as cores.

Qual o espectro visível do olho humano?
400nm (violeta) a 700nm (vermelho).

Quais os picos de maior sensibilidade do olho humano?
Aproximadamente ao verde (principal), ao vermelho (um pouco menor) e ao azul (bem menor).

Como são percebidas as cores pelo ser humano?
Através de uma combinação linear, onde cada cor é expressa como soma ponderada das cores básicas, que são três Red, Green e Blue.

Qual o sistema de cores utilizado nos computadores?
Usualmente o sistema RGB (Red-Green-Blue) que é sistema aditivo, onde controla a intensidade da geração das três cores básicas- primárias aditivas.

Como é definida a cor no computador?
Especifica-se a intensidade (valor associado) aos emissores R, G e B.

O que é um sistema aditivo?
São fontes emissoras de luz.

O que são sistema subtrativo?
São utilizados nas tintas, os pigmentos absorvem determinadas cores e refletem outras.


Quais as cores fundamentais do sistema subtrativo?
(CMY - Cyan, Magenta e Yellow)

O Sistema subtrativo.
É complementar ao RGB (inverso); É usada a variante CMYK (cyan-magenta-yellow-black) devido à dificuldade de obter pigmentos com alta pureza de cor.

Qual a utilização do sistema subtrativo?
Impressão, fotografia.

Existem apenas os sistemas RGB e CMY como formas de representação de cores?
Existem outros sistemas que procuram se adaptar melhor a uma determinada aplicação ou função. Tais como: YIQ; HSI; HSV; HLS.

O que é matiz?
É a medida do comprimento de onda dominante (mede a frequência dominante da vibração luminosa), ou seja, mede a qualidade que distingue o azul do verde, do vermelho, etc., com codificação de cerca de 4 bits.

O que é Saturação?
Medida da pureza da cor. O Branco (mistura perfeita das cores) representa a impureza da cor (saturação zero). Para outras cores, a saturação pode ser entendida como a quantidade de branco presente. Tons muito saturados são “brilhantes”. Tons pouco saturados são “pastel”. Codificação – cerca de 4 bits.

O que é Intensidade ou luminância?
É a medida da energia luminosa. Preto representa a ausência de energia (intensidade nula). Parâmetro da cor ao qual o olho é mais sensível. Sistemas “monocromáticos” trabalham com a informação de luminância. Codificação - 8 bits.

Modelo YIQ
Usado na transmissão comercial de TV colorida. Foi projetado para tirar vantagem do sistema da maior sensibilidade da visão humana a mudanças na luminância do que nas mudanças de matiz e saturação. Representação de Y - Banda mais larga. Representação de I e Q – banda mais estreita. Luminância e informação de cores desacopladas.

O Modelo HSI.
Componente de intensidade (I) desacoplado da informação de cor. Os componentes de matiz e saturação são intimamente relacionados à percepção humana de cores. Ideal para desenvolvimento de algoritmos baseados em propriedades do sistema visual humano.

O Modelo HLS.
Usado para especificação de cor por usuários humanos. A intensidade ou luminância - medida da energia luminosa. O matiz - medida do comprimento de onda dominante. A saturação - medida da pureza da cor. O preto representa a ausência de energia (baixa luminância). O branco representa a impureza da cor (baixa saturação).

O que a Gama do sistema?
É o conjunto de cores que pode ser produzido a partir de determinadas primárias.


REPRESENTAÇÃO VETORIAL E MATRICIAL

Onde é empregada a Representação Vetorial da Imagem?
Em computação gráfica, para a definição e modelagem dos objetos sintéticos que serão representados pela imagem.

O que são primitivas vetoriais?
São os elementos básicos para a representação vetorial que são os pontos, as linhas, as curvas, etc. As primitivas vetoriais são associadas a um conjunto de atributos que define sua aparência e a um conjunto de dados que define sua geometria (pontos de controle).

Quais as vantagens das imagens vetoriais?
Facilidade de armazenamento dos elementos geométricos; Facilidade de manipulação (escala, rotação, etc.); Alteração simples.

Qual a desvantagem das imagens vetoriais?
Requer dispositivos de saída específicos para ter bons resultados;

Representação Matricial de Imagem.
É típica das imagens digitalizadas capturadas por scanners ou utilizadas nos vídeos.

Como é feita a Representação Matricial de Imagem?
A imagem é descrita por um conjunto de células em um arranjo espacial bidimensional, uma matriz, onde cada célula representa os pixels da imagem. As imagens matriciais são também conhecidas como bitmaps.

Quais as vantagens das imagens matriciais?
Fácil tradução para dispositivos baseados em pontos (monitores, impressoras, etc.); Fácil armazenamento e leitura; Valores dos pixels podem ser alterados individualmente ou em grupo;

Quais as desvantagens das imagens matriciais?
Imagens podem ser muito grandes; Dificuldade em realizar operações de escala.

O que é Rasterização?
Conversão de um arquivo vetorial para o formato matricial.

O que é Vetorização?
Conversão de um arquivo matricial para o formato vetorial.

Como interagimos com o sistema?
Através dos dispositivos gráficos interagimos com o sistema na busca de uma extensão dos limites do nosso corpo e uma melhor comunicação com a máquina.

Os dispositivos podem ser.
Dispositivos gráficos de entrada: Mesa Digitalizadora, Tablet, Joysticks, Luvas, Scanners Tridimensionais, Roupa de RV, entre outros.
Dispositivos gráficos de saída: Plotters, Cave, Display de retina, entre outros.

TRANSFORMAÇÕES GEOMÉTRICAS

Adição:
[1 1 1] + [2 0 3] = [3 1 4]

Subtração:
[1 1 1] – [2 0 3] = [-1 1 -2]

Multiplicação:
[1 2] [7 6] = [1x7+2x5 1x6+2x0] = [17 6]
[3 4] [5 0]    [3x7+4x5 3x6+4x0]   [41 18]

4 de abril de 2012

Inteligência Artificial - Aula 4


Arvore de Busca
Busca Horizontal

Ilustração: Calcular
  ∫(cos2x+x3-2)dx
  ∫(cos2x)dx           ∫(x3)dx       ∫(2)dx
∫((1-cos2xdx)/2)     x4/4              2x
∫(dx/2) ∫(cos2x/2)dx
    x/2        sen2x

A busca horizontal segue o seguinte algoritmo:
Enquanto existe (nó com filhos)
|
|
Fim enquanto
Procure os nós colaterais

- A Busca Horizontal é aplicável a qualquer problema possível de ser decomposto.
- Algoritmos que fazem Busca Horizontal sempre tendem a resolver problemas. Jogos do tipo Labirinto usam esse tipo de busca.

Busca em Profundidade ou Vertical

A Busca em Profundidade tem como objetivo criar uma ordem em um conjunto de objetos.
        (A)
        /
     (B)
     /  \
  (D) (C)
   /
(E)

A Busca em profundidade faria incursões aos nós pela esquerda até não haver mais filhos, ou seja, percorreria o caminho. A, B, D, E, C.

Busca Heurística

Esse tipo de busca, parte do pressuposto que já existe um caminho ótimo e por conta disso já exclui algumas possibilidades.

Em IA, os métodos utilizados em aprendizagem de máquina, exigem a necessidade de armazenar o conhecimento em estruturas de Dados.

No tópico de hoje abordaremos as árvores de busca e os métodos de norvegação.

Os problemas clássicos a serem modelados, que fizeram a necessidade do uso de árvores são:

- O Problema do caixeiro viajante (Euler);
- O Problema dos Canibais e missionários;
- O Problema do preenchimento dos baldes.

Projeto de Banco de Dados - Aula 4


Stored Programs

Execução condicional
É possível controlar o fluxo de execução utilizando IF e CASE,  ambos possuem praticamente a mesma funcionalidade.


 4.1

Loops
Permitem stored programs executar declarações repetidamente. São 3 os tipos de Loop:

- Loops simples utilizando LOOP e END LOOP;
- Loops que continuam enquanto uma condição é verdadeira, usando as cláusulas WHILE e END WHILE;
- Loops que continuam até que a condição seja verdadeira, usando as cláusulas REPEAT e UNTIL.
Nos 3 casos, a execução é concluída com a declaração LEAVE.

4.2

Resultado da execução

4.3

Tratando Erros
Quando um erro ocorre em um stored program o comportamento padrão é terminar o programa a passar o erro pro programa-chamador.

O que fazer quando precisamos responde de uma forma diferente ao erro?
Criamos um Error Handler
Vamos verificar 2 cenários....

Tratando Erros

Cenário 1:
Se pensarmos que um SQL incorporado pode não retornar linha alguma, ou precisássemos recuperar todas as linhas usando com comando SELECT utilizando um cursor (http://en.wikipedia.org/wiki/Cursor_(databases)), um NOT FOUND iria impedir que o stored program terminasse prematuramente.

Cenário 2:
Se pensarmos que um comando SQL pode retornar um erro (violação de restrição, por exemplo), podemos criar um tratador para evitar o término do programa. O tratador irá permitir processar o erro e continuar a execução do programa.

Interagindo com o Banco de Dados
A maioria dos stored programs envolve algum tipo de interação com o Banco de Dados. Existem quatro principais tipos:

- Guardar o resultado de um comando SQL em uma variável;
- Criar um curso que permite o stored program iterar através das linhas retornadas pelo comando SQL;
- Executar um comando SQL e devolver o resultado ao programa-chamador;
- Incorporar comando SQL que não retornam um conjunto de registros.

Interagindo com o Banco de Dados - SELECTing INTO Local Variables
Usamos SELECT INTO quando buscamos informações de uma única linha de dados.
Neste caso incluímos a cláusula INTO dentro do SELECT que diz ao banco de dados onde colocar o dado recebido.

4.4

4.5

Interagindo com o Banco de Dados – Utilizando Cursores
SELECT INTO é bom para resultados de uma única linha.

É quando queremos tratar um retorno com múltiplas linhas?
Resposta... Use cursores
Um cursor permite obtermos uma ou mais linhas de conjunto de registros, normalmente com a intenção de interarmos processando linha-a-linha.

4.6

Interagindo com o Banco de Dados – Incorporando Non_SELECTs

4.7

Interagindo com o Banco de Dados – Chamando Stored Programs de Stored Programs

4.8

Criando e usando Cursores
Para tratar um comando SELECT que retornar mais de uma linha, nós devemos criar e manipular um cursor.
Um cursor é um objeto que fornece programaticamente acesso a um conjunto de resultados retornados pelo SELECT.
Usamos um cursor para iterar através das linhas no conjunto de resultados e executar uma ação para cada linha individualmente.

Definindo um cursor.
Definimos um cursor com a comando DECLARE que tem a seguinte sintaxe:
DECLARE cursor_name CURSOR FOR SELECT_...;
A declaração do cursor deve ocorrer depois da declaração de todas as variáveis.
Declarar antes gera um erro 1337.
Um cursor está sempre associado com um comando SELECT.

Um cursor pode referenciar variáveis dentro da cláusula WHERE ou uma lista de colunas.

CREATE PROCEDURE cursor_demo (in_customer_id INT)
BEGIN
DECLARE v_customer_id INT;
DECLARE v_customer_name VARCHAR(30);
DECLARE c1 CURSOR FOR
SELECT in_customer_id,customer_name
FROM customers
WHERE customer_id=in_customer_id;

Declarando um cursor
Existem 3 declarações para executar operações com cursores:

OPEN – Inicializa o resultset para o cursor;
FETCH – Recebe a próxima linha do cursor e move o ponteiro do cursor para a linha seguinte.
CLOSE – Desativa o cursor e libera a memória associada com aquele cursor.
Devemos fechar um cursor toda vez que terminarmos o FETCH.

...
OPEN cursor1;
cursor_loop:LOOP
FETCH cursor1 INTO l_customer_name,l_contact_surname,l_contact_firstname;
END LOOP cursor_loop;
CLOSE cursor1;
...

...
OPEN cursor1;
cursor_loop:LOOP
FETCH cursor1 INTO l_customer_name,l_contact_surname,l_contact_firstname;
END LOOP cursor_loop;
CLOSE cursor1;
E o que acontece se tentarmos pegar um dado além dos que contém no cursor?
ERROR 1329 (02000): No data to FETCH

DECLARE CONTINUE HANDLER FOR NOT FOUND SET l_last_row_fetched=1;

SET l_last_row_fetched=0;
OPEN cursor1;
cursor_loop:LOOP
FETCH cursor1 INTO l_customer_name,l_contact_surname,l_contact_firstname;
IF l_last_row_fetched=1 THEN
LEAVE cursor_loop;
END IF;
/*Do something with the row fetched*/
END LOOP cursor_loop;
CLOSE cursor1;
SET l_last_row_fetched=0;

Tipos de Loop de um cursor

OPEN dept_csr;
dept_loop1:LOOP
FETCH dept_csr INTO l_department_id,l_department_name,l_location;
IF no_more_departments=1 THEN
LEAVE dept_loop1;
END IF;
SET l_department_count=l_department_count+1;
END LOOP;
CLOSE dept_csr;
SET no_more_departments=0;

----
DECLARE dept_csr CURSOR FOR SELECT department_id,department_name, location FROM departments;

DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_departments=1;
SET no_more_departments=0;
OPEN dept_csr;
REPEAT
FETCH dept_csr INTO l_department_id,l_department_name,l_location;
UNTIL no_more_departments
END REPEAT;
CLOSE dept_csr;
SET no_more_departments=0;

-----
DECLARE dept_csr CURSOR FOR SELECT department_id,department_name, location
FROM departments;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_departments=1;
SET no_more_departments=0;
OPEN dept_csr;
dept_loop:REPEAT
FETCH dept_csr INTO l_department_id,l_department_name,l_location;
IF no_more_departments THEN
LEAVE dept_loop;
END IF;
SET l_department_count=l_department_count+1;
UNTIL no_more_departments
END REPEAT dept_loop;
CLOSE dept_csr;
SET no_more_departments=0;

----
4.9

Condições de Erro

4.10

4.11

4.12

4.13