Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Artiklar / Titel på artikeln

Att använda sig av lagrade procedurer i asp/vb

Postad 2000-10-17 av Pelle Johansson i sektionen ASP.NET, C#, Okategoriserat med 0 Kommentarer | Läst av: 5414, Betyg: 85%

Förord

När man pratar om lagrade procedurer (stored procedures) kan det tyckas vara ett konstigt ord, har något med databaser att göra och man "kallar på dom" - men sen är det inte mycket mer. En lagrad procedur kan liknas med en helt vanlig sql-fråga som du skall köra antingen från Visual Basic, ASP eller något annat program. Att förstå varför man använder detta kan sammanfattas med några ord, det går snabbare - mycket snabbare.
Innehåll
Det som egentligen händer är att din lagrade procedur är kompilerad, testad och verifierad vilket innebär att databasmotorn inte behöver utföra denna kontrollen en gång till. Det innebär även att du inte behöver skicka lika mycket textmassa till databasservern från din sida och även det gör att det går snabbare. Om man kör samma procedur på samma sida så ligger även detta cachat och därmed tjänar du ytterligare tid.

Det finns givetvis många fördelar men kanske det viktigaste jag tycker är att du kan lägga intelligensen i databasen och låta asp/vb bara hantera resultatet - ett script kan förvanskas för olika ändamål - men när den lagrade proceduren finns på databasen så spelar det ingen roll vilka program som kallar på informationen - det blir alltid samma resultat. Det är här nästa aspekt kommer in - är det fel i proceduren blir det fel överallt, rättar du i proceduren blir det således också rätt överallt.

Nog om detta, när jag skriver en lagrad procedur så testar jag det först i min SQL-editor * och ser att det fungerar korrekt och att jag får med de parametrar som jag vill skicka med. Vi kan börja med ett exempel att skriva en selectsats:

* Du får fram SQL-editorn genom att i SQL Enterprise Manager välja Tools|SQL Server Query Analyzer.

Select strFirstName +' '+ strLastName as Name, lngAge
From tblUser
Where lngUserID = 28
And blnUserPublic = 1


SQL-satsen ovan tar ut förnamn, efternamn - konkatinerar (slår ihop) och kallar fältet namn istället, ålder på användarid = 28 som även vill visa sitt visitkort för andra. Vi testkör och får fram ett record, nu är det dags att skapa den nya lagrade proceduren:

CREATE PROCEDURE sp_GetUserInfo
AS
Select strFirstName +' '+ strLastName as Name, lngAge
From tblUser
Where lngUserID = 28
And blnUserPublic = 1

Nu har vi skapat proceduren, det är dags att definera de fält som vi vill skicka med denna lagrade procedur. I detta fall är det userid och userpublic:

CREATE PROCEDURE sp_GetUserInfo
@userid int,
@userpublic int
AS
Select strFirstName +' '+ strLastName as Name, lngAge
From tblUser
Where lngUserID = 28
And blnUserPublic = 1

Samt ersätta våra värden med det som skickas till den lagrade proceduren:

CREATE PROCEDURE sp_GetUserInfo
@userid int,
@userpublic int
AS
Select strFirstName +' '+ strLastName as Name, lngAge
From tblUser
Where lngUserID = @userid
And blnUserPublic = @userpublic


Nu är faktiskt den lagrade proceduren klar. Nu sparar vi den och använder oss återigen av vårt sql-fönster och testar att kalla på den genom att skriva:

sp_GetUserInfo 28, 1

Tryck F5 så körs din fråga. Resultatet blir att du får en post innehållande fältet Name och lngAge. Nu är det dags att skriva en liten ASP-rutin som kallar den och får tag i den returnerade posten.

<%
' ansluter till min datakälla
set con = server.createObject("ADODB.Connection")
con.open "mindsn","user,"password"

' vem skall vi presentera?
userid = Request("userid")
userpublic = Request("userpublic")

' kör vår lagrade procedur
set rst=con.execute("sp_GetUserInfo " & userid & "," & userpublic)

' fick vi någon post?
Response.Write "sp_GetUserInfo returnerade:
"

If Not (Rst.Eof Or Rst.Bof) Then
Response.Write Rst("name") & "-" & Rst("lngAge")
Else
Response.Write "ingen träff."
End If

' frigör objekten
set rst=nothing
set con=nothing

%>

När man ser på det, så verkar det ju inte vara någon skillnad från vår ursprungliga sql-fråga, men som jag påpekade tidigare, uttaget går mycket snabbare - det kan röra sig om flera hundra procents prestandaökning i vissa fall. Logiken ligger på databasen och i din programkod så krävs minimalt med information vilket i sin tur medför renare program, färre fel, mindre kod, säkrare data och att rätta - det gör man på ett enda ställe om det blir fel.

Ett litet tips: I din SQL-editor kan det tänkas att du har flera sql-satser och några lagrade procedurer. Markera den sql du vill köra och tryck F5 - då körs bara det som markerats och inget annat.

Var denna artikeln användbar?
Om du gör någon intressant som grund av detta material så skicka gärna det med ett mail eller bifoga en länk till mig så presenterar jag detta som ytterligare exempelfiler för kursen. Om detta innehållet är felaktigt eller du lärt dig fler finesser så skriv gärna en rad eller varför inte en egen kurs baserat på dina erfarenheter. Sänd gärna in dina tips till denna kurs.

/Pelle Johansson
Upp

0 Kommentarer

Skriv en kommentar på artikeln

Ditt betyg på artikeln



Kommentar:





Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 158
27 952
271 704
782
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies