PL/SQL - zapytania

0

Mam takie zadania

1 Utworzyć tabele tmp_prac
2 W tabeli tmp_prac dla pracowników którzy zarabiają mniej niz 10000 zł zwiększyć pensje o 20 % . Wykonać przy pomocy PL/SQL
3 Z tabeli tmp_prac wyświetlić na konsoli imiona nazwiska i wynagrodzenia pracowników zarabiających powyżej 12000 . Wykonać przy pomocy PL/SQL
4 Usunąć tabele tmp_prac

1 CREATE TABLE tmp_prac;
2 Co do drugiego mam tyle

select employee_id , salary
from tmp_prac
where salary<10000;

3 załącznik
4 DROP TABLE tmp_prac;

0

Czemu PL/SQL? Zwykły SQL wystarczy...

  1. Źle. Znaczy się dobrze, ale w kontekście następnych pytań, to źle.
  2. SELECT dobrze. Trzeba na UPDATE zamienić.
  3. nie widzę.
  4. dobrze
0

CREATE TABLE tmp_prac (
Employee_id int
,Salary int
,Imie varchar (32)
,Nazwisko varchar (64)
)

INSERT INTO tmp_prac (Employee_id,Salary,Imie,Nazwisko) VALUES (1,9000,'Jan','Nowacki'),(2,11000,'Michał','Kowalski'),(3,14000,'Krzysztof','Mączyński')

SELECT employee_id , salary
FROM tmp_prac
WHERE salary < 10000;

UPDATE tmp_prac SET salary = salary * 1.2 WHERE salary < 10000;

SELECT Imie, Nazwisko, salary
FROM tmp_prac
WHERE salary > 12000;

0

Co do punktu 3 to zapewne chodzi o dbms_output stąd polecenie wyświetlić w konsoli chyba, że chodzi o sqlplus. Uściślij proszę

0

Co do punktu 3 to coś takiego:

BEGIN
  DBMS_OUTPUT.PUT_LINE('start');
  FOR x IN (SELECT  t.imie, t.nazwisko
                    FROM tmp_prac t
                    where salary < 12000;
                    order by t.nazwisko) LOOP
      DBMS_OUTPUT.PUT_LINE(x.imie||' '||x.nazwisko);
   END LOOP;
END;

Pisałem z głowy więc sprawdź sobie na jakimś sqlfiddle czy to działa

Co do reszty to już Ci chłopaki wcześniej podali gotowe rozwiązania chyba, że chodzi o to żeby z tego procedurę/funkcję PL/SQL zrobić ale to też musisz napisać co jeszcze potrzebujesz

W kontekście Twojego komentarza @Ronaldo7 rozumiem, że rozwiązanie podane przez @firefox odpada i trzeba to przez for zrobić więc ja bym zrobił coś w ten deseń:

BEGIN 
  for rec in (SELECT employee_id , salary FROM tmp_prac WHERE salary <= 10000) loop
    UPDATE tmp_prac SET salary = salary * 1.2 WHERE employee_id = rec.employee_id ;
   END LOOP;
END;

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