SQL Cap2
SQL Cap2
SQL Cap2
SELECT FROM
EMPNO,ENAME,SAL EMP
WHERE
DEPTNO = &DEPARTAMENT_NUMBER;
10
EMPNO ENAME
SAL
----- --------- ----------7782 CLARK 7839 KING 7934 MILLER 2,450.00 5,000.00 1,300.00
Exemplul anterior utilizeaza conditia WHERE DEPTNO=10. Cu un singur ampersand utilizatorul este obligat sa dea o valoare de fiecare data cand comanda este executata,deoarece variabila nu este definita si de fiacare data valoarea introdusa nu este salvata . O valoare de tip caracter sau data are nevoie sa fie inchisa in ghilimele simple cand sunt introduse la cerere.Pentru a evita ghilimelele simple ce tre- buie sa fie introduse la executie ,puteti pune variabilele in ghilimele simple. In urmatoarea declaratie ,variabila este pusa intre ghilimele simple, asa ca ghilimele nu mai sunt necesare la introducerea valorii respective:
DEPTNO
SAL*12
Cat timp variabila este variabila 'nedefinita' ,valoarea va fi ceruta de fiecare data cand declaratia este executata. Este posibil sa fie cerut numele unei coloane sau chiar numele unei tabele in timpul executiei. In urmatorul exemplu vi se cere o expresie aritmetica:
SELECT FROM
DEPTNO
SAL/12
10 204.167 20 250
10 416.667 30 125
10 108.333
Variabile substituite cu dublu ampersand. Daca variabila este prefixata de dublu ampersand(&&),SQL*Plus va cere valoarea pentru variabila doar o singura data .SQL*Plus stocheaza prima valoare furnizata si o foloseste din nou de fiecare data cand declaratia SQL este rulata
Puteti folosi comanda SQL*Plus DEFINE pentru a determina daca variabila este deja definita.Daca variabila este deja definita se afiseaza valoarea asignata.
Comanda DEFINE este de asemenea folosita pentru a crea o variabila utilizator. Substitutia datelor ca o comanda text Cand informatia dintr-o comanda substituita este introdusa intr-o co- manda inaintea executiei sale,variabila poate fi folosita pentru a inzestra orice parte a structurii comenzii exceptand numele insusi al comenzii.De exemplu:
SELECT WHERE
FROM
SALGRADE
&CONDITION
Variabila CONDITION ,de mai sus,trece intreaga conditie a clauzei WHERE intr-o comanda.Mai departe intregul cod al comenzii(incepand cu cuvantul SELECT) poate fi trecut intr-o variabila.
SELECT
&THE_REST;
Comanda DEFINE O valoare poate fi asignata unei variabile folosind comanda DEF[INE] a lui SQL*PLUS.Valoarea definita trebuie referita intr-o construc- tie SELECT sau un fisier de comenzi , prefixind numele variabilei cu &. Variabilele pot fi golite folosind UNDEF[INE]. In urmatorul exemplu , o variabila a fost definita folosind o expresie aritmetica ce calculeaza remuneratia. In urmatoarele constructii, variabila REM e referita de un numar de ori. Variabila e apoi golita fo- losind UNDEFINE.
SQL >undefine
REM
ENAME
JOB
SAL*12+NUL(COMM,0)
-----------------------------------------------SMITH JAMES ADAMS WARD MILLER MARTIN CLERK CLERK CLERK SALESMAN CLERK SALESMAN 9600 11400 13200 15500 15600 16400
'' de la expresii sunt optionale , daca expresia nu contine spatii. Ghilimelele pot fi deasemenea folosite si sunt optionale dar folositoare daca expresia contine blancuri sau apostrofi. Pornirea unui fisier cu comenzi care contine substitutii de variabile Presupunind ca doriti o serie de rapoarte care sa listeze angajatii cu functii diferite - de exemplu , una pentru SALESMEN , una pentru CLERKS, una pentru MANAGERS si tot asa.Cunoasteti cum sa folositi substitutia de variabile pentru a obtine aceste rapoarte dintr-o singura constructie SELECT. Cu toate acestea , exista o tehnica alternativa pe care s-o folositi si anume sa scrieti constructia SELECT intr-un fisier si apoi folosind comanda START sa-l executati. Aceasta tehnica impune folosirea unor substitutii speciale de variabile. Exista 9 asemenea variabile si ele au intregii de la 1 la 9 ca nume. Pentru folosirea acestor variabile , puneti un '&' urmat de un intreg (1-9) in comanda SQL.Aceste variabile pot fi folosite de ori de cite ori doriti si in orice ordine . De fiecare data cind comanda e rulata, fiecare '&1' din comanda e inlocuit de primul parametru dupa START fisier, fiecare '&2' e inlo- cuit de al doilea parametru s.a.m.d.
Pentru a crea un fisier de comenzi care ia un parametru specificind functia care trebuie afisata , introduceti:
SQL>SAVE JOB1
SQL*PLUS
intoarce mesajul:
Created file job1 Apoi rulati comanda cu parametrul 'CLERK'. cu valoarea parametrului.
SQL>
START JOB1
CLERK
Observati ca nu se pot folosi variabile cind executati o comanda cu RUN. Trebuie sa introduceti comanda in fisier si sa o rulati cu START comanda. Comanda ACCEPT
Comanda ACCEPT permite unei variabile sa fie create si unei valori , care e introdusa sa fie memorata in ea. Aceasta variabila poate fi apoi referita in constructia SQL. ACCEPT este folosita deseori intr-un fisier de comenzi . Sunt citeva avantaje rezultate din folosirea lui ACCEPT pentru definirea substitutiei de variabile:
Tipurile de date pot fi verificate Prompturile pot fi mai explicative Valorile de raspuns pot fi ascunse
[PROMPT/NOPROMPT 'text'][HIDE]
Sintaxa + Descrierea NUMBER/CHAR determina tipul variabilei.Daca valoarea introdusa este nevalida , va fi afisat un mesaj. PROMPT 'text' afiseaza daca text e specificat NOPROMPT face ACCEPT sa sara o linie asteptind intrarea HIDE suprima raspunsul utilizatorului. folositor pentru parole
Exemple
SQL> ACCEPT SALARY NUMBER Salary figure : 30000 SQL>ACCEPT PASSWORD CHAR
PROMPT
PROMPT
DEFINE SALARY
=30000(NUMBER)
Rezumat Cind SQL*Plus intilneste &variabila: 1. Daca &variabila este deja definita, definitia deja existenta e folosita. 2. Daca & variabila nu e definita: o Utilizatorul e gata pentru definitie o Definitia furnizata de utilizator e apoi folosita o Definitia furnizata de utilizator e apoi pierduta Cind SQL Plus intilneste &&variabila : La fel ca pasii 1 si 2 de deasupra cu exceptia faptului ca valoarea variabilei e salvata. Observatie: &1 parametru e tratat ca &&. Pentru a afla daca o variabila e deja definita, folositi comanda DEF[INE]: DEF DEPARTAMENT daca e definit, da definitia lui DEPARTAMENT daca nu specifica 'nedefinit' Pentru a defini o variabila , se poate folosi deasemenea comanda DEF[INE].
DEF COMM = Ghilimelele nu sunt necesare , dar ajuta daca "NVL (COMM,0)" expresia contine blancuri imbricate sau apostrofi. Cit timp ramin variabilele definite? Pina cind le UNDEF[ine] sau le redefinim sau pina iesim din SQL*PLUS. Alte 2 modalitati de definire a unei variabile:
SQL>ACCEPT variabila [tip] [PROMPT text][HIDE] SQL>COL[UMN] nume coloana /alias NEW_VALUE capitolul 11) variabila (tratata in
1. Generati o constructie
prin care sa
angajare intre 2 date date. Rulati de 2 ori cererea. Modificati cererea pentru a folosi &&variabila .Rulati-o de citeva
care sa accepte
executati
ENAME
JOB
SAL
MGR DEPTINO
----------------------------------------------
SCOTT FORD
ANALYST ANALYST
20 20
reprezentind expresia
folosita pentru
30.000 $ pe an
ENAME
SAL*12+NUL(COMM,0)
---------------------------------JONES BLAKE SCOTT KING FORD 35700 34200 36000 60000 36000
Cap.3 Solutii
1.
2.
3.