Problem ze zmiennymi w SQL-u

0

Hej!

Chciałem wypróbować użycie zmiennych lokalnych w kodzie ale mi nie działa.
Co jest z tym nie tak?

DECLARE @AverageSalary AS SMALLINT
SET @AverageSalary = AVG(employees.salary)

SELECT *
FROM employees
WHERE salary > @AverageSalary
1

DECLARE może być wykorzystane jedynie wewnątrz procedury (tzw. stored procedure).

0

Ze zmiennymi sesyjnymi jest tak samo?

0

Nie jestem pewien - musiałbyś sprawdzić (przy czym wtedy nie DECLARE, a samo SET).

1

Nie wiem, jak to się robi w mysqlu, ale próbowałbym tak:

SET @AverageSalary=(SELECT AVG(salary) FROM employees)

Tylko nie wiem, po co Ci tam w ogóle zmienna. Nie możesz wepchnąć tego zapytania o średnią do WHERE?
O tym, że średnią pakujesz do zmiennej typu całkowitego to już nawet nie wspomnę. Damn, wspomniałem :-)

0

Mogę. Ale chciałem poeksperymentować.

Twoje rozwiązanie działa w mySQL:

SET @AverageSalary=(SELECT AVG(salary) FROM employees);

SELECT *
FROM employees
WHERE salary > @AverageSalary

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