PLSQL
PLSQL
PLSQL
SQL> declare
2 nom_varA NUMBER(8) DEFAULT 10;
3 begin
4 dbms_output.put_line(user);
5 end;
6 /
SQL> declare
2 nom_var VARCHAR(20) NOT NULL;
3 begin
4 dbms_output.put_line(user);
5 end;
6 /
nom_var VARCHAR(20) NOT NULL;
*
ERROR at line 2:
ORA-06550: line 2, column 9:
PLS-00218: a variable declared NOT NULL must have an initialization assignment
SQL> declare
2 nom_var BOOLEAN :=1 ;
3 begin
4 dbms_output.put_line(user);
5 end;
6 /
nom_var BOOLEAN :=1 ;
*
ERROR at line 2:
ORA-06550: line 2, column 19:
PLS-00382: expression is of wrong type
ORA-06550: line 2, column 9:
PL/SQL: Item ignored
4. nom_var BINARY_INTEGER ;
VALID
SQL> declare
2 nom_var BINARY_INTEGER;
3 begin
4 dbms_output.put_line(user);
5 end;
6 /
SQL> declare
2 2nom_var BINARY_INTEGER ;
3 begin
4 dbms_output.put_line(user);
5 end;
6 /
2nom_var BINARY_INTEGER ;
*
ERROR at line 2:
ORA-06550: line 2, column 1:
PLS-00103: Encountered the symbol "2" when expecting one of the following:
begin function pragma procedure subtype type <an identifier>
<a double-quoted delimited-identifier> current cursor delete
exists prior
The symbol "2" was ignored.
SQL> declare
2 nom_varI NUMBER(3) :=123.45678 ;
3 begin
4 dbms_output.put_line(user);
5 end;
6 /
SQL> declare
2 nom_var NUMBER(3) :=1234.5678 ;
3 begin
4 dbms_output.put_line(user);
5 end;
6 /
declare
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: number precision too large
ORA-06512: at line 2
INVALID
SQL> declare
2 nom_varK CONSTANT NUMBER(12,3) :=123.45678 ;
3 begin
4 dbms_output.put_line(user);
5 end;
6 /
B
Care este rezultatul afişat de programul următor?
declare
utilizator varchar2(30) := '1 :' || user ;
begin
declare
utilizator varchar2(30) := '2 :' || user ;
begin
declare
utilizator varchar2(30) := '3 :' || user ;
begin
dbms_output.put_line (utilizator) ;
end ;
end ;
end ;
/
C
CreaŃi un bloc PL/SQL în care declaraŃi variabilele de la secŃiunea A, punctele
1,6,8.
AfişaŃi informaŃiile stocate în aceste variabile.
declare
nom_varA NUMBER(8) DEFAULT 10 ;
begin
declare
nom_varI NUMBER(3) :=123.45678 ;
begin
declare
nom_varK CONSTANT NUMBER(12,3) :=123.45678 ;
begin
dbms_output.put_line(nom_varA);
end;
end;
end;
/
D
Care sunt expresiile valide care pot înlocui trei puncte din blocul următor?
declare
v_1 emp%ROWTYPE ;
begin
… / SELECT * INTO v_1 FROM emp WHERE empno= 7900 ;
end ;
/
F
CreaŃi blocul PL/SQL care preia de la tastatură un nume de departament şi
returnează un
mesaj ce indică numărul de angajaŃi la acest departament.
G
CreaŃi blocul PL/SQL care permite inserarea unui nou angajat:
utilizaŃi variabile de substituŃie pentru parametrizarea blocului PL/SQL, pentru
numele şi
codul angajatului ; pentru salariu, utilizaŃi rezultatul de la secŃiunea E, dublat;
celelalte
coloane rămân nule. ConfirmaŃi (validaŃi actualizările).
După execuŃie, afişaŃi tabela.
H
CreaŃi blocul PL/SQL care permite efectuarea operaŃiilor:
- afişarea jobului, salariului şi datei de angajare a angajatului ALLEN ; ştergerea
înregistrării angajatului SMITH.
- modificarea comisionului lui TURNER, acordându-i încă 50 de unităŃi şi mărirea
salariului lui cu 50%.
ExecutaŃi blocul, afişaŃi tabela şi apoi anulaŃi toate modificările.
I
CreaŃi blocul PL/SQL care permite modificarea locaŃiei unui departament :
utilizaŃi variabilele de substituŃie pentru a parametriza blocul PL/SQL, pentru
numele
departamentului şi noua locaŃie. ConfirmaŃi (validaŃi) actualizările.
După execuŃie, afişaŃi tabela.
J
CreaŃi blocul PL/SQL care permite ştergerea angajaŃilor unui anumit departament, a
cărui
nume este introdus de la tastatură printr-o variabilă de substituŃie. AfişaŃi
numărul de linii
afectate (SQL%ROWCOUNT).
După execuŃie, afişaŃi tabela.