krótkie zadanie z pl/sql

0

Witam.
Mam takie zadanie: "Wyświetl na ekranie sumę pensji i liczbę pracowników zatrudnionych w oddziale o nazwie podanej
przez użytkownika."
Na początek na brudno zrobiłem prosty select :

select sum(salary), count(employee_id) from employees join departments using(department_id) where department_name like 'Marketing' group by department_name;

i wynik jaki otrzymałem to suma 19000 i liczba pracowników to 2. Jest to prawidlowy wynik bo sprawdziłem również ręcznie w bazie

a więc przeszedłem do zrobienia w pl/sql i póki co wykombinowałem coś takiego:

ACCEPT nazwadzialu prompt 'nazwa dzialu: ';
DECLARE
nazwa varchar2(128):=&nazwadzialu;
wynik1 int;
wynik2 int;
BEGIN
select sum(salary) into wynik1 from employees join departments using(department_id)
where department_name=nazwa
group by department_name;

select count(employee_id) into wynik2 from employees join departments using(department_id)

where department_name=nazwa
group by department_name;
DBMS_OUTPUT.PUT_LINE ('Suma to: '||wynik1||' , a liczba pracowników to: '||wynik2);
END;
/

Niestety nie pokazuje mi wyniku,
raport error jaki otrzymałem to:
"Error report -
ORA-06550: line 2, column 22:
PLS-00201: identifier 'MARKETING' must be declared
ORA-06550: line 2, column 7:
PL/SQL: Item ignored
ORA-06550: line 7, column 23:
PLS-00320: the declaration of the type of this expression is incomplete or malformed
ORA-06550: line 7, column 23:
PL/SQL: ORA-00904: "NAZWA": invalid identifier
ORA-06550: line 6, column 6:
PL/SQL: SQL Statement ignored
ORA-06550: line 11, column 23:
PLS-00320: the declaration of the type of this expression is incomplete or malformed
ORA-06550: line 11, column 23:
PL/SQL: ORA-00904: "NAZWA": invalid identifier
ORA-06550: line 10, column 5:
PL/SQL: SQL Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:"

Wiem że coś z deklaracją "nazwa" mam nie tak. Tylko nie mogę ogarnąć co :(

1

Tak bez sprawdzania, przy deklaracji zmiennej nazwa odwołanie do parametru &nazwadzialu powinno być w apostrofach bo to ciąg znaków.

nazwa varchar2(128):='&nazwadzialu';

0

PL/SQL procedure successfully completed.
Dziękuję

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.