segunda-feira, 10 de outubro de 2011

Tópico: List the uses of variables, declare and initialize variables, use bind variables

Seria algo como 'Listar os usos de variáveis, declarar e inicializar variáveis​​, usar ' bind variables''... acho que já abordamos boa parte destes assuntos, contudo, vamos revisá-los mais um pouco!


1) Listar os usos de variáveis:

- Armazenamento temporário de dados;
- manipulação de valores armazenados ;

- reusabilidade;
- facilidade de manutenção;


2) Declare and initialize variables:

Para declararmos variáveis, primeiramente informamos o nome do identificador (seguindo as regras do post passado), seguindo do tipo e, se preciso for, precisão do mesmo;

VARIAVEL_1 VARCHAR2(50);

VARIAVEL_2 NUMBER(10);

Para iniciarmos estas variáveis, devemos atribuir um valor correspondente ao seu tipo no momento da declaração;

VARIAVEL_1 VARCHAR2(50) := 'Olá! Variável iniciada!';

VARIAVEL_2 NUMBER(10) := 1234;

 3) Bind variables(Variáveis de Ligação) ;

Uma variável de ligação é uma variável que você declara em um ambiente de host e usa para passar
valores de tempo de execução, número ou caractere, para ou de um ou mais programas PL/SQL, os
quais podem usá-la como usariam qualquer outra variável. Você poderá referenciar variáveis
declaradas em ambientes de host ou chamada em instruções PL/SQL, a não ser que a instrução esteja
em um procedimento, função ou pacote. Isso inclui as variáveis de linguagem declaradas em
programas do pré-compilador, campos de tela em aplicações de Form do Oracle Developer e as
variáveis de ligação SQL*Plus.

Criando Variáveis de Ligação

Para declarar uma variável de ligação no ambiente SQL*Plus, você deve usar o comando
VARIABLE. Por exemplo, você poderá declarar uma variável de tipo NUMBER e VARCHAR2
como se segue:
Tanto o código SQL quanto o SQL*Plus poderão referenciar a variável de ligação, e o código
SQL*Plus poderá exibir seus valores.

VARIABLE return_code NUMBER;
VARIABLE return_msg VARCHAR2(30);


Para referenciar uma variável de ligação no
PL/SQL, você deverá criar um prefixo antes
do nome usando dois-pontos (:).
Exemplo:

 VARIABLE g_salary NUMBER
DECLARE
  v_sal emp.sal%TYPE;
BEGIN
  SELECT sal
      INTO v_sal
  FROM emp
     WHERE empno = 7369;
   :g_salary := v_sal;
END;
/


 fonte: Introdução ao Oracle: SQL e PL/SQL - Guia do Estudante • Volume 2

Tópico: Recognize valid and invalid identifiers

Olá!
Como 'Reconhecer identificadores válidos e inválidos'? Existem algumas regrinhas básicas que você deve aprender para não cair em uma pegadinha na prova. 

1) Devem ter menos que 30 caracteres;

DECLARE

    MINHA_VARIAVEL_GIGANTE_E_INVALIDA_DE_EXEMPLO VARCHAR2(20);

BEGIN
 NULL;
END;
/

Aparentemente não existe erro... mas se obsevarmos a regra que diz "Devem ter menos que 30 caracteres", veremos que a nossa variável é inválida, gerando o seguinte erro:

PLS-00114: identifier 'MINHA_VARIAVEL_GIGANTE_E_INVAL' too long

Como resolver? Simples, basta diminuir o tamanho do nome:

DECLARE

    MINHA_VARIAVEL_VALIDA VARCHAR2(20);

BEGIN
 NULL;
END;
 
 Compilado sem problemas!


2) Começar com uma letra;

Tente compilar o seguinte bloco:

DECLARE

    1VARIAVEL VARCHAR2(20);

BEGIN
 NULL;
END;
 
 /

PLS-00103: Encountered the symbol "1" when expecting one of the following:
 
 Todo e qualquer identificador criado pelo usuário deve começar com uma letra, minúscula ou maiúscula, mas sempre uma LETRA!

3) Podem incluir $, # ou _;
 Todos os identificadores declarados abaixo são válidos:


  MINHA_VARIAVEL_VALIDA VARCHAR2(20);

  MINHA#VARIAVEL#VALIDA VARCHAR2(20);

  MINHA$VARIAVEL$VALIDA VARCHAR2(20);

4) Não pode conter pontuação, espaços ou hífen.
 Todos os identificadores declarados abaixo não são válidos:

 MINHA-VARIAVEL-INVALIDA VARCHAR2(20);

 MINHA,VARIAVEL,INVALIDA VARCHAR2(20);

 MINHA VARIAVEL INVALIDA VARCHAR2(20);

MINHA;VARIAVEL;INVALIDA VARCHAR2(20);


etc...


Até a próxima!

Declaring PL/SQL Variables

Antes de tudo, desculpas! Fiquei bastante tempo ausente, mas estou de volta e com fôlego renovado! Então, vamos lá!

O conteúdo deste assunto já foi abordado em um tópico anterior, chamado 'Os tipos de variáveis em PL/SQL', que pode ser acessado aqui. Sendo assim, vamos ao próximo assunto!