| & e && | ![]() |
Variável definida com &
Uma variável funciona como um recipiente onde são armazenados valores temporariamente. É possivel utilizar variáveis para guardar valores que serão usados no momento da execução do comando SQL.
O comando abaixo solicita ao utilizador um número de departamento quando é executado:
SELECT empno,ename,sal FROM emp WHERE deptno = &numero_departamento; |
Enter value for numero_departamento: 20
old 3: WHERE deptno = &numero_departamento
new 3: WHERE deptno = 20
EMPNO ENAME SAL
---------- ---------- ----------
7369 SMITH 800
7566 JONES 2975
7788 SCOTT 3000
7876 ADAMS 1100
7902 FORD 3000
|
Quando os valores solicitados são do tipo caracter ou data a base de dados exige que sejam introduzidos entre plicas ('). Para evitar o uso das plicas podemos usar uma variável de susbstituição, como no exemplo abaixo:
SELECT ename,deptno, sal*12 FROM emp WHERE job = '&funcao'; |
Enter value for funcao: CLERK old 3: WHERE job = '&funcao' new 3: WHERE job = 'CLERK' ENAME DEPTNO SAL*12 ---------- ---------- ---------- SMITH 20 9600 ADAMS 20 13200 JAMES 30 11400 MILLER 10 15600 |
É possivel pedir uma expressão aritmética para uma variável de substituição, como no exemplo seguinte:
SELECT deptno, &expressao FROM emp; |
Enter value for expressao: sal*14+nvl(comm,0)
old 1: SELECT deptno, &expressao
new 1: SELECT deptno, sal*14+nvl(comm,0)
DEPTNO SAL*14+NVL(COMM,0)
---------- ------------------
20 11200
30 22700
30 18000
20 41650
30 18900
30 39900
10 34300
20 42000
10 70000
30 21000
20 15400
DEPTNO SAL*14+NVL(COMM,0)
---------- ------------------
30 13300
20 42000
10 18200
14 rows selected.
|
Variável definida com &&
Quando a variável é precedida com && o SQL*Plus pedirá o valor uma única vez, pois armazena o valor fornecido e utiliza-o sempre que uma instrução SQL faça referência a essa variável durante a sessão.
SELECT ename, deptno, job FROM emp WHERE DEPTNO = &&numero_departamento; |
Enter value for numero_departamento: 10 old 3: WHERE DEPTNO = &&numero_departamento new 3: WHERE DEPTNO = 10 ENAME DEPTNO JOB ---------- ---------- --------- CLARK 10 MANAGER KING 10 PRESIDENT MILLER 10 CLERK |
/ |
old 3: WHERE DEPTNO = &&numero_departamento new 3: WHERE DEPTNO = 10 ENAME DEPTNO JOB ---------- ---------- --------- CLARK 10 MANAGER KING 10 PRESIDENT MILLER 10 CLERK |
O comando DEFINE pode ser utilizado para verificar se uma variável tem conteúdo (está definida):
DEFINE |
DEFINE _DATE = "06.06.16" (CHAR) DEFINE _CONNECT_IDENTIFIER = "XE" (CHAR) DEFINE _USER = "HR" (CHAR) DEFINE _PRIVILEGE = "" (CHAR) DEFINE _SQLPLUS_RELEASE = "1002000100" (CHAR) DEFINE _EDITOR = "C:\Program Files\UltraEdit\uedit32.exe" (CHAR) DEFINE _O_VERSION = "Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production" (CHAR) DEFINE _O_RELEASE = "1002000100" (CHAR) DEFINE _RC = "1" (CHAR) DEFINE NUMERO_DEPARTAMENTO = "10" (CHAR) |
Substituição de parte do comando
Como os dados contidos nas variáveis de substituição são inseridos no comando antes da sua execução, a variável pode ser utilizada para definir qualquer parte da estrutura do comando, excepto a palavra reservada SELECT. No exemplo abaixo é utilizada uma variável de substituição para a condição da claúsula WHERE:
SELECT empno, ename, sal, comm FROM emp WHERE &condicao; |
Enter value for condicao: JOB='CLERK'
old 3: WHERE &condicao
new 3: WHERE JOB='CLERK'
EMPNO ENAME SAL COMM
---------- ---------- ---------- ----------
7369 SMITH 800
7876 ADAMS 1100
7900 JAMES 950
7934 MILLER 1300
|
Realizado por Turtle Learning ®. Última alteração em 2011-08-15