krótkie zadanie z pl/sql

Odpowiedz Nowy wątek
2020-09-15 21:54

Rejestracja: 3 lata temu

Ostatnio: 6 dni temu

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

  1. 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 :(

edytowany 7x, ostatnio: mati1808, 2020-09-15 22:03

Pozostało 580 znaków

2020-09-15 22:12

Rejestracja: 4 lata temu

Ostatnio: 1 dzień temu

Lokalizacja: Śląsk

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';

Pozostało 580 znaków

2020-09-16 07:24

Rejestracja: 3 lata temu

Ostatnio: 6 dni temu

0

PL/SQL procedure successfully completed.
Dziękuję

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0