Translate

Variáveis, Constantes e Blocos de Código

Untitled Document

Variáveis, Constantes e Blocos de Código

Autor: Prof. Paulo Kaupa

 

Este artigo trata variáveis e constantes e suas aplicações na programação para banco de dados. Ao trabalhar com programação no PL/SQL é necessário o uso de Blocos de Código, que determinam o início e o fim da codificação.

Os Blocos de Código PL/SQL podem ser classificados em duas categorias Blocos Anônimos e Blocos Identificados.

Blocos Anônimos - São blocos de código que não estão encapsulados em uma estrutura do Banco de Dados. Estes blocos não são armazenados no banco, são executados pelo gerenciador (SGBD) em tempo de execução (runtime), se houver a necessidade de executar novamente o bloco é necessário recriá-lo como exemplo de utilização destes códigos pode-se citar as Triggers (blocos PL/SQL associados a uma tabela). Sintaxe básica de um Bloco de Código no PL/SQL.:

                DECLARE

--Local destinado a declaração de variáveis, constantes e cursores que serão usados na programação.

 

                BEGIN --Início da programação

                               --Entre as palavras-chaves BEGIN e END são digitados os códigos do programa.

 

                               EXCEPTION

                               --Seção destinada a tratar exceções (erros) e emissões de mensagens

                               --Esta Seção não é de uso obrigatório.

 

                END; --Fim da programação

 

Obs.: Note que o código está Identado (possue recuos na margem esquerda orientando a hierarquia do código), adquira o hábido de sempre usar este recurso que facilita a leitura do programa.

 

Blocos Identificados - Quando cria-se um bloco de código que poderá ser usado futuramente, pode-se nomear este bloco e quando existir a necessidade de usar este bloco basta fazer uma referencia ao nome dado.

As Procedures e Functios são blocos identificados, são elementos frequentemente utilizados em programação para banco de dados.

Obs.: Blocos identificados serão tratados mais adiante, este artigo tem como objetivo principal trabalhar com Variáveis e Constantes aplicadas em blocos anônimos.

 

Os Blocos de Código permitem a inserção de comentários que ajudam a organizar e a interpretar o código.

Para comentar uma linha usa-se dois traços seguidos (--). A seguir ten-se um bloco de códigos com algus comentários, as linhas onde existir a ocorrência de dois traços seguidos não irão interferir na execução do programa.

 

DECLARE

                --Local para declaração de variáveis, constantes e cursores.    

BEGIN --Início da programação               

                --Seu código aqui           

END; --Fim da programação

 

Comentarios em duas ou mais linhas sequencias pode-se usar os caracteres /* */, exemplo:

DECLARE

                /*

                               Local para declaração de variáveis;

                               De Constantes e

                               Cursores.

                */

BEGIN --Início da programação                                                                              

                --Seu código aqui           

END; --Fim da programação

 

Variáveis e constantes são elementos frequentemente usados nas linguagens de programação dentre elas o PL-SQL. Estes elementos reservam espaço em memória para armazenar um dado de determinado tipo.

A diferença entre Variáveis e Constantes é que o conteúdo de uma variável pode ser trocado durante a execução de um programa. Já uma constante recebe um valor que não será alterado na execução do programa, este conteúdo será o mesmo do início ao fim do programa.

O uso de variáveis em um programa tem objetivo de Armazenar dados de forma temporária e possibilitar a reutilização destes dados durante o tempo de execução do programa.

Sintaxe para a declaração de variáveis no PL-SQL:

                DECLARE             v_nomeVariavel             TIPO <tamanho>;

Onde:

                DECLARE: Palavra chave do PL/SQL usada na declaração de variáveis e constantes.

                NOME_VARIAVEL: Nome dado a variável e que será usado sempre que for necessário fazer uma referencia a ela, por exemplo, atribuir um valor a esta variável ou consultar o valor contido nesta variável.

                TIPO: Informar qual o tipo de dados que a variável irá receber (Exemplo: VARCHAR,  CHAR, NUMBER...).

O nome das variáveis e das constantes devem seguir algums regras:  

  • Sempre começar com uma letra.
  • Não pode ser igual a um nome reservado do PL/SQL.
  • Não pode conter espaços.
  • Tamanho máximo de 30 caracteres.

               

A declaração das variáveis deve ser feita no local destinado as declarações, seção declarativa apresentada no bloco de códigos. Com as declarações define-se o nome das variáveis e constantes, o tipo de dados que irão receber e o tamanho que será reservado em memória.

Caso exista a necessidade de declarar duas ou mais variáveis use a palavra-chave DECLARE apenas uma vez separando cada variável por ponto e virgula (;), recomenda-se colocar cada variável em uma linha diferente para facilitar a leitura e consequentemente a manuteção. Exemplo:

                DECLARE

                                               v_nome VARCHAR2(20);

                                               v_sobreNome VARCHAR2(20);

 

Atribuindo Valores a uma variável:

v_ nomeVariavel            :=             Valor;

O Símbolo dois pontos e igual (:=) significa atribuição de valores.

Uma variável também pode receber um valor no momento de sua declaração, este valor pode ser alterado ao longo da execução do programa.

 v_ nomeVariavel           :=           Valor_Inicial;

 

Atribuindo valores a uma variável e exibindo seus valores na tela:

O exemplo apresentado nesta sessão, irá declarar uma variável numérica que receberá um valor e em seguida o conteúdo atribuído será apresentado na tela.

 

Exemplo de declaração de uma variável numérica:

DECLARE             v_numerica       NUMBER(38);

SET SERVEROUTPUT ON;

DECLARE v_numerica NUMBER(38);

BEGIN

  v_numerica := 10;

  DBMS_OUTPUT.PUT_LINE(v_numerica);

END;

 

Onde:

 SERVEROUTPUT é um comando que possibilita a impressão de mensagens na tela. Este comando pode ser configurada como ON ou OFF, para que as mensagens sejam exibidas na tela utilize ON e OFF quando desejar que as mensagens não sejam exibidas na tela.

DBMS_OUTPUT é um pacote que armazena um conjunto de procedures do PL/SQL.

 PUT_LINE procedure armazenda no pacote DBMS_OUTPUT que efetivamente imprime um conteúdo na tela.

 

OBS.:  Uma vez configurado para ON o comando SERVEROUTPUT não precisa mais ser inserido nos códigos.

 

Exemplo de variável texto:

SET SERVEROUTPUT ON;             

 

DECLARE             v_texto               VARCHAR2(20);

 

BEGIN

  v_texto              :=            'PROF. PAULO KAUPA';

  DBMS_OUTPUT.PUT_LINE(v_texto);

END;

 

Exemplo de uma variável que recebe um conteúdo inicial no momento de sua declaração:

DECLARE             v_texto                VARCHAR2(20)                :=           'Prof. PAULO KAUPA';

 

BEGIN

                DBMS_OUTPUT.PUT_LINE (v_texto);

END;

 

 

Variáveis Texto e Numéricas no mesmo programa:

SET SERVEROUTPUT ON;

 

DECLARE            

v_numerica       NUMBER(38); 

                v_numerica 2    NUMBER(38);

                v_soma                               NUMBER(38);

                v_rotulo              VARCHAR2(10);

 

BEGIN --DML

  v_numerica     :=            41; 

  v_numerica2   :=            2;

  v_soma              :=            v_numerica  +  v_numerica2;

  VAR_ROTULO :=             'RESULTADO';

  DBMS_OUTPUT.PUT_LINE (v_rotulo || ': ' || v_soma);

END;

 

Somando o conteúdo de duas variáveis:

SET SERVEROUTPUT ON;

DECLARE

   v_numerica     NUMBER(38); 

                   v_numerica2  NUMBER(38);

                   v_soma              NUMBER(38);

 

BEGIN --DML

  v_numerica      := 41; 

  v_numerica2   := 2;

  v_soma               :=           v_numerica  + v_numerica2;

  DBMS_OUTPUT.PUT_LINE (v_soma);

END;

 

Declaração de constantes no PL-SQL:

c_nomeConstante           CONSTANT        TIPO      :=            Valor_Inicial;

 

Declaração de Constante:

DECLARE             c_texto                                CONSTANT        VARCHAR2(20) := 'EXEMPLO DE CONSTANTE';

BEGIN 

                DBMS_OUTPUT.PUT_LINE(c_texto);

END;

Passando valores de um campo de tabela para uma variável:

CREATE TABLE TB_PRODUTO

(

    COD_PRODUTO NUMBER(38),

    DESCRICAO_PRODUTO VARCHAR2(50),

    PRECO_UNITARIO NUMBER(7,2)

);

COMMIT;

 

INSERT INTO TB_PRODUTO

VALUES

(

    111, 'Impressoras', 2.35

);  

COMMIT;

 

DECLARE             v_descricaoProduto      VARCHAR2(50);

BEGIN 

                SELECT

 DESCRICAO_PRODUTO                               INTO     v_descricaoProduto

FROM

TB_PRODUTO;

DBMS_OUTPUT.PUT_LINE(v_descricaoProduto);

END;

 

               

 

Passando valores de dois ou mais campos de para variáveis:

 

 

DECLARE

    v_descricaoProduto VARCHAR2(50);

    v_precoUnitario NUMBER(7,2);   

   

BEGIN 

                SELECT

                                 DESCRICAO_PRODUTO,

  PRECO_UNITARIO

INTO

v_descricaoProduto,

 v_precoUnitario

  FROM

 TB_PRODUTO; 

 

    DBMS_OUTPUT.PUT_LINE(v_descricaoProduto || ' - ' || v_precoUnitario);

END;

 

 

Atributo %TYPE

 

Usa-se o atributo %TYPE quando deseja-se declarar uma variável com o mesmo tipo de uma coluna de determinada tabela ou com o mesmo tipo de outra variável já declarada.

A vantagem do uso do atributo %TYPE é o erro por incompatibilidade entre tipos de dados. Outra vantagem é caso o tipo de dados ou a precisão de uma coluna da tabela for modificada a variável declarada com este atributo não precisa ser alterada, garantido desta forma a compatibilidade de dados.

 

Sintaxe para a declaração de variáveis com o atributo %TYPE:

 

                v_nomeVariavel                             tb_nome.nome_coluna%TYPE;

 

Onde:

                              

                v_nomeVariavel: é o nome dado a variável.

                tb_nome: tabela que contem a coluna a qual deseja-se obter o tipo

                nome_coluna: coluna a qual deseja-se obter o tipo

 

Referencias

 

                D73724 - Oracle Database: Fundamentos de PL/SQL. Guia do Aluno D64254BP10, Edição 1.0. Material desenvolvido e distribuído por: Oracle Corporation. Agosto, 2011.

Sobre o Autor:

Mestre em Engenharia de Produção pela Universidade Nove de Julho. Bacharel em Ciência da Computação também pela Universidade Nove de Julho. Atualmente é Professor de ensino superior (Universidade Nove de Julho), Analista de Sistemas na Empresa Atento e Pesquisador na área de Inteligência Computacional aplicada em investimentos na Bolsa de Valores de São Paulo. Possui experiência em Análise e desenvolvimento de sistemas, aplicações de Inteligência Computacional no Mercado de Ações, Análise Técnica para seleção de ações para investimentos na Bolsa de Valores. Curriculo Lattes: http://lattes.cnpq.br/0074185478343196