SQL PROCEDURA

Paweł Nowak
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 4 lata
  • Postów:2
0

Witam, mam problem z procedurą która pobiera nazwe zespołu i wyświetla ilość pracowników danego zespoł

korzystam z aplikacji MYSQL WORKBENCH 8.0 CE
zapis procedury w skrócie:
CREATE DEFINER=root@localhost PROCEDURE iloscPrac(in naz varchar(20),out ilosc int)
BEGIN

select z.nazwa ,(select count(*) from pracownicy p where p.ID_ZESP=z.ID_ZESP)as ilosc_prac

from zespoly z
where z.nazwa=naz;
END

wywołując procedure podaje nazwe zespoły np call iloscPrac("Blue",@ilo)

Podana wyzej procedura działa poprawnie lecz brakuje 'into'
jezeli dodam do procedury into ( select z.nazwa ,(select count(*) from pracownicy p where p.ID_ZESP=z.ID_ZESP)as ilosc_prac into ilosc....... )

to przy wywołaniu jej wywala błąd
"Error Code:1222 The used SELECT statements have a different numer of columns"
Nw dlaczego tak sie dzieje.
Proszę o Pomoc i z góry dziękuję.

kate87
  • Rejestracja:ponad 15 lat
  • Ostatnio:ponad 3 lata
0

A co wraca Ci sam select?

woolfik
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 4 godziny
  • Postów:1598
3

No co się dziwisz skoro pobierasz 2 kolumny (z.nazwa i count) a into robisz tylko do ilosc. Utworz drugą zmienną typu "nazwa" - pewnie varchar - i dopisz into zmienna_nazwa, zmienna_ilosc. Ewentualnie wywal nazwę z select

Paweł Nowak
CREATE DEFINER=root@localhost PROCEDURE iloscPrac(in naz varchar(20),out ilosc int , out nazwa varchar(20))?? moze byc 2 razy out ?
woolfik
może być i 100 ale problem masz w innym miejscu
kate87
To ja dorzucę od siebie, zwróć uwagę na select.

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.