Procedura za brisanje podataka


Prva procedura koju ću opisati je procedura za brisanje. Ona je najjednostavnija i na njoj se mogu pokazati neke stvari koje će se kasnije stalno ponavljati.

Zadatak procedure za brisanje sloga u našoj tablici MP_VALUTA je

  • prihvat podataka šifre valute koju želimo obrisati
  • obrisati slog koji ima traženu šifru valute
  • u pomoćnu varijablu zapisati upješnost izvršenja radnje

Evo kako bi ta procedura izgledala:

CREATE PROCEDURE dbo.mp_valuta_delete
@valuta        CHAR(3)
AS
SET NOCOUNT ON

DECLARE    @err    INT
SET @err = -1

DELETE
FROM    MP_VALUTA
WHERE    VALUTA    = @valuta
SET @err = @err + @@ERROR

RETURN @err
GO

Varijabla @valuta prihvaća vrijednost šifre valute koju želimo obrisati.

Svaka SQL naredba vraća poruku o broju zahvaćenih slogova. U procedurama je taj podatak suvišan, a često i smeta te se koristi SET NOCOUNT ON kako se te poruke ne bi javljale.

Varijabla @err je tipa INT i dodijeljena je inicijalna vrijednost -1.

Izvršava se naredba DELETE nad tablicom MP_VALUTA za slog gdje je VALUTA = @valuta.

Odmah nakon izvršavanja naredbe DELETE postoji redak: SET @err = @err + @@ERROR.

@@ERROR je sistemska varijabla samog MS SQL Servera u koju se zapisuje rezultat izvršavanja posljednje SQL naredebe. Ako nije došlo do greške, @@ERROR je 0, a ako je bila greška, zapisuje se broj te greške koji je uvijek neki broj veći od nule. Bitno je vrijednost preuzeti nakon samog izvođenja naredbe jer se vrijednost prepisuje s novom vrijednošću nakon izvršavanja ideuće naredbe.

Analogno tome, ako nije došlo do greške na kraju vrjednost lokalne varijable mora biti -1. U slučaju bilo kakve greške vrijednost je veća od -1.

Na kraju se vraća vrijednost varijable @err. To nije output varijabla nego tzv. return value.

Jako je korisna kada se procedura poziva iz neke druge procedure.

  1. No comments yet.
(will not be published)