Wpis z mikrobloga

#sql #mssql

chcę utworzyć procedurę która przy dodaniu pracownika do tabeli pracownicy da mu 100 zł płacy dodatkowej jeżeli będzie zarabiał poniżej 1000 zł, a jeżeli powyżej to nie daje mu nic. Zrobiłem takie coś ale nie dodaje tych 100zł, gdzie popełniłem błąd

alter procedure podwyzka
(@id_prac int, @nazwisko varchar(15) = null, @etat varchar(10) = null, @id_szefa int = null, @zatrudniony date = null, @placa_pod decimal(6,2) = null, @placa_dod decimal(6,2) = null, @id_zesp int = null)
as
begin
insert into PRACOWNICY(ID_PRAC, NAZWISKO, ETAT, ID_SZEFA, ZATRUDNIONY, PLACA_POD, PLACA_DOD, ID_ZESP)
values (@id_prac, @nazwisko, @etat, @id_szefa, @zatrudniony, @placa_pod, @placa_dod, @id_zesp)
if @placa_pod <1000
begin
set @placa_dod = isnull(@placa_dod, 100)
end
end
  • 16
@ugotowany_kamien: ja bym najpierw sprawdzał pensje podstawowa i w zależności czy jest mniejsza czy nie od tego 1000 to dodawał 100 zł i gotowe dane insertowal, po co robic insert a pozniej kolejna operacje na bazie jak mozna załatwić to jedna operacja
alter procedure podwyzka
(@idprac int, @nazwisko varchar(15) = null, @etat varchar(10) = null, @id_szefa int = null, @zatrudniony date = null, @placa_pod decimal(6,2) = null, @placa_dod decimal(6,2) = null, @id_zesp int = null)
as
begin
if @placa_pod <1000
if @placa_dod = null
begin
@placa_dod = isnull(@placa
dod, 100)
else
@placa_dod = 100
end
insert into PRACOWNICY(IDPRAC, NAZWISKO, ETAT, IDSZEFA, ZATRUDNIONY, PLACAPOD, PLACADOD, IDZESP)
values (@id
prac,
@dobry_programista: zmieniłem na takie coś i jest git

alter procedure podwyzka
(@idprac int, @nazwisko varchar(15) = null, @etat varchar(10) = null, @id_szefa int = null, @zatrudniony date = null, @placa_pod decimal(6,2) = null, @placa_dod decimal(6,2) = null, @id_zesp int = null)
as
begin
insert into PRACOWNICY(ID
PRAC, NAZWISKO, ETAT, IDSZEFA, ZATRUDNIONY, PLACAPOD, PLACADOD, IDZESP)
values (@idprac, @nazwisko, @etat, @id_szefa, @zatrudniony, @
@ugotowany_kamien: nie zrozumiałeś, najpierw powinieneś sprawdzać czy płaca podstawowa jest mniejsza niz 1000, jeśli tak to ustaw płace dodatkowa na 100, jeśli nie to nic nie rob (na początku czyli podczas inicjalizacji ustaw ja na 0 a nie nulla), na koniec bez żadnych juz warunków zrób zwykłego inserta do bazy tak jak to teraz robisz na początku