Undersidor

Användarmeny

MySQL Stored Procedures

Introduktion till stored procedures (lagrade procedurer) i MySQL.

Inledning

När MySQL AB lanserade MySQL5, så var det den största uppdateringen av databasen MySQL sedan version 4. I och med version 5 så kunde man använda Stored Procedures (Lagrade Procedurer).

För att förstå denna artikel fullt ut bör du ha i bakhuvudet att den riktar sig främst till de som redan vet vad MySQL är och har grundläggande databaskunskaper. Om du inte har en blekaste aning om vad MySQL är för något, så spelar det ingen roll om du läser artikeln eller inte. Du kommer inte att förstå särskilt mycket.

Vad behöver jag för program

Det enda du behöver förutom MySQL5 är en SQL-editor. Jag använder Navicat MySQL. Man kan naturligtvis använda phpMyAdmin om man så vill.

Vad är en lagrad procedur

En lagrad procedur är en funktion som innehåller SQL-kod som utför något. En lagrad procedur sparas i själva databasen. Man anroppar en lagrad procedur genom att skriva CALL. Fördelarna med en lagrad procedur är att man inte behöver skriva samma SQL-kod om och om igen. Utan man behöver bara anroppa den. Det kan spara en del utvecklingstid.

En procedurkropp ser ut så här

    CREATE PROCEDURE <procedurnamn>(<paramenterlista>)
    BEGIN
    END

Det är smart att ge proceduren ett namn som talar om vad den gör. Börja ett procedurnamn med prefixen sp_ eller p_

Vår första procedur

Nu ska vi skriva våran första procedur. Den kommer att skriva ut det berömda Hello World! Vi döper våran proceduren till sp_hello.

    CREATE PROCEDURE sp_hello()
    BEGIN
       SELECT 'Hello World!';
    END

När vi är klara, exekverar vi koden. När koden exekveras, skapas proceduren. För att testa att den fungerar så skriver vi CALL sp_hello(); i SQL-editorn och resultatet bör självklart bli Hello World!.

Parametrar

Nu ska vi ändra proceduren så att den tar en IN-parameter, med en IN-parameter kan du skicka in ett värde i proceduren. Det finns även OUT-parameter som skickar tillbaka ett värde, och INOUT-parameter som både kan ta emot och skicka tillbaka värden.

Denna procedur döper vi till sp_hello2.

    CREATE PROCEDURE sp_hello2(IN name VARCHAR(30))
    BEGIN
       SELECT CONCAT('Hej ',name,'!');
    END

Nu gör vi precis som när vi skapade våran första procedur, för att skapa sp_hello2. Skriv CALL sp_hello2('Kalle'); i SQL-editorn och exekvera koden.

Resultatet borde se ut så här: Hej Kalle!

Boktips

Boken MySQL - Stored Procedures Programming är en mycket bra bok om lagrade procedurer. Boken lär också ut hur man skapar triggers och vad transactions är.

ISBN: 0596100892

Skribent: Christher Lenander
http://www.w3sidan.net/profil/ice

Forum

Var innehållet i den här artikeln användbar? Har du några övriga kommentarer?

Omdöme

Hur mycket gillade du den här artikeln? Ju fler hjärtan desto bättre.

  • Poäng: 4.2/5