1 / 9

Stored Procedure

Stored Procedure. Stored Procedure er programstumper, der gemmes i databasen og afvikles op databaseserveren på samme måde som forespørgsler. Med Stored Procedures kan man på den måde flytte basal behandlig op på serveren og opnå en både mere optimal og sikker afvikling.

Download Presentation

Stored Procedure

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Stored Procedure Stored Procedure er programstumper, der gemmes i databasen og afvikles op databaseserveren på samme måde som forespørgsler. Med Stored Procedures kan man på den måde flytte basal behandlig op på serveren og opnå en både mere optimal og sikker afvikling. Fra C# programmer kan man aktivere Stored Proceures med Command objektets meroder: ExecuteNonQuery: Hvis der ikke ønskes brugt noget resultat fra den afviklede Stored Procedure. ExecuteScalar: Hvis der ønskes et enkelt resulat fra den afviklede Stored Procedure ExecuteReader: Hvis en Stored Procedure aflevere en forespørgsel som resultat og man ønsker at anvende denne. For at afvilke en Stored Procedure anvendes SQL udtrykket EXEC efterfulgt af parametrene, enten i som værdier i den declarerede rækkefølge med komma imellem eller ved at angive parameterens navn = tildelt værdi. Dette vises i de efterfølgende eksempler

  2. Eksempler på Stored Procedure Primitiv beregnings procedure, der illustrere simple parametre og returværdier Der kan returneres én værdi. CREATE PROCEDURE BroekVaerdi ( @taeller int = 1, @naevner int = 1 ) AS BEGIN DECLARE @result int IF @naevner = 0 BEGIN RETURN 0.0 END ELSE BEGIN set @result = @taeller / @naevner; RETURN @result END END

  3. Eksempler på Stored Procedure Proceduren kaldes enten med parametrene i rækkefølge, som de er erklæret i proceduren, eller med navngivning. Resultater kan bruges lokalt i declarede variable. Hvis værdier skal bruges uden for SQL, kan de returneres i en forespørgsel. Denne forespørgsel læses fra C# med DataReader. DECLARE @tal1 int; DECLARE @tal2 int; EXEC @tal1 = BroekVaerdi 10, 2 EXEC @tal2 = BroekVaerdi @naevner=2, @taeller=10 SELECT @tal1, @tal2 /* resultat i en forespørgsel*/

  4. Eksempler på Stored Procedure CREATE PROCEDURE FindPersonMedEfternavn ( @efternavn varchar(10) = '%' ) AS BEGIN select * from person where efternavn like @efternavn; END • Eksempler på brug af proceduren • EXEC FindPersonMedEfternavn “Larsen%” • EXEC FindPersonMedEfternavn

  5. Eksempler på Stored Procedure CREATE PROCEDURE OpretAfdeling /* med muligt autonr*/ ( @afdnr int, @afdnavn varchar(30) ) AS BEGIN insert into afdeling (Afdnr, AfdNavn) Values (@afdnr,@afdnavn); END • Eksempler på brug af proceduren • EXEC OpretAfdeling 10, ‘Afd ti’ • EXEC OpretAfdeling @afdnr=10 @afdnavn=‘Afd ti’ • EXEC OpretAfdeling @afdnavn=‘Afd ti’ @afdnr=10

  6. Eksempler på Stored Procedure CREATE PROCEDURE OpretAfdeling2 /* med muligt autonr*/ ( @afdnr int = -1, @afdnavn varchar(30) ) AS BEGIN BEGIN TRANSACTION IF @afdnr < 0 BEGIN select @afdnr = max(afdnr) from afdeling; set @afdnr = @afdnr +1; END insert into afdeling (Afdnr, AfdNavn) Values (@afdnr,@afdnavn); select * from afdeling WHERE AfdNr=@afdnr; COMMIT TRASACTION END • Eksempler på brug af proceduren • EXEC OpretAfdeling2 @afdnr=10 @afdnavn=‘Afd ti’ • EXEC OpretAfdeling2 @afdnavn=‘Afd auto’

  7. Eksempler på Stored Procedure CREATE PROCEDURE OpretPeson /* I tabel hvor key er def. som identity autonummerering*/ ( @navn varchar(30) ) AS BEGIN insert into Person (Navn) Values (@navn); select * from Person WHERE Id=@@identity; END • Eksempler på brug af proceduren • EXEC OpretPerson ‘Bjørk’ • EXEC OpretPerson @navn=‘Busch’

  8. Eksempler på Stored Procedure CREATE PROCEDURE OpretKontoPostering ( @KontoID int, @Beloeb int, @Tekst varchar(30)) AS BEGIN DECLARE @Saldo int BEGIN TRANSACTION INSERT INTO Transakion (kontoID, Beloeb, Tekst) Values (@KontoID@Beloeb,@Tekst); UPDATE Konto SET Saldo=Saldo+@Beloeb WHERE KontoID=@KontoID; SELECT @Saldo = Saldo FROM konto WHERE KontoID=@KontoID; IF @Saldo < 0 ROLLBACK TRANSACTION ELSE COMMIT TRANSACTION END Eksempel på brug af proceduren EXEC OpretKontoPostering @KontoID=1002 @Beloeb=100 @Tekst=‘kontantudbetaling‘

  9. Eksempler på Stored Procedure • CREATE PROCEDURE RetPersonNavn2 • ( • @PersonNr int, • @Fornavn varchar(30), • @Efternavn varchar(30), • @OldFornavn varchar(30), • @OldEfternavn varchar(30) • ) • AS • BEGIN • DECLARE @XFornavn varchar (30) • DECLARE @XEfternavn varchar (30) • DECLARE @outtable as table /* temporær tabel til rettede poster – før ændring */ • ( • Fornavn varchar(30) , Efternavn varchar(30) • ) • BEGIN TRANSACTION • UPDATE Person SET Fornavn=@Fornavn , Efternavn=@Efternavn • OUTPUT deleted.Fornavn, deleted.Efternavn • INTO @outtable /* her fås gamle poster*/ • WHERE PersonNr=@PersonNr; • SELECT @XFornavn = Fornavn, @XEfternavn= Efternavn FROM @outtable; • IF @XFornavn = @OldFornavn AND @XEfternavn = @OldEfternavn • BEGIN • COMMIT TRANSACTION • RETURN 1 • END • ELSE • BEGIN • print 'Roolback da data var ændret før opdatering' • ROLLBACK TRANSACTION • RETURN 0 • END • END Eksempel på brug af proceduren EXEC RetPersonFornavn 5, 'NyFornavn', ‘NyEfternavn‘, ‘GlFornavn’, ‘GlEfternavn Denne løsning sikre at præcis de felter vi ændrer ikke er rettet af andre undervejs. Dette er en “stærkere” løsning end “bare” at sikre at rækken ikke er ændret.

More Related