& 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