Stored procedures eru hluti af gagnagrunninum og virka þannig að þú skrifar sql skipanir fyrirfram og vistar þær, gagnagrunnurinn t.d SQL Server tekur síðan stefjuna eins og þetta heitir á íslensku og compælar hana og notar það seinna meir aftur og aftur. Sem sagt eykur vinnsluhraðann. Þetta er svona mjög gróf lýsingin. Þú getur látið stefjurnar gera allan fjandan, og kallað í eina stefju sem framkvæmir x mikið af allskyns sql setningum inn í einni stefju.
Ég veit ekki hversu öflugar stored procedures eru í MS Access….grunar svona að það sé ekkert svakalegt….það er samt hægt að nota þær í Access…mæli með þessari grein til að kíkaj á það:
http://www.devcity.net/net/article.aspx?alias=msaccess_spMæli samt með að þú googl-ir stored procedures til að lesa þér meir um það…en í aðalatriðum þá eru þetta fyrirfram búnar til sql setningar sem geymdar eru á gagnagrunninum. Setningarnar eru innan í einni stefju sem héti kanski writenews þannig að í asp kóðanum kallaru í stefjuna writenew, sendir inn breytur, td textan fyrir fréttina og thats it. Enginn SQL kóði á asp síðunni.
Annars ef ég væri að gera þetta sem þú ert að gera í SQL server þá myndi stefjan líta eitthvað svona út.
Stefjan heitir qhoisloggedin. Kallar í hana og sendir inn gildið sem er notendanafnið sem kemur inn í færibreytunni @username. Síðan bý ég til aðra breytu í stefjunni sem heitir @userId sem geymir id á user í töflunni userLoggedIn sem heldur utanum alla usera sem eru loggaðir inn. Ég framkvæmi SQL skipun sem er að finna notanda í þeirri töflu með usernameið sem þú sendir inn, til að athuga hvort ég hafi þegar skráð hann áður. Ef að sú sql skipun skilar userid þá er hann til í töflunni og þá er @userId ekki null og því framkvæmi ég updateskipunina. Nota hérna GETDATE() fallið til að fá dags og tíma. Ef @userId er null þá er notandinn ekki til í töflunni og því fer ég í else-ið og bý til nýjann notanda. Síðan í lokin vel ég alla notendurnar úr töflunni samkvæmt einhverju skilirði (eins og var talað um áðan, miðað við 20 mín frá því sem skráð er í datetoday í userLoggedIn).
CREATE PROCEDURE dbo.whoisloggedin
@username nvarchar(200)
AS
DECLARE @userid INT
SET @userId = (SELECT userId FROM userLoggedIn WHERE username = @username)
if @userId is not null
begin
UPDATE userLoggedIn SET datetoday = GETDATE() WHERE userId = @userId)
end
else
begin
INSERT INTO userLoggedI(username, datetoday) (@username,GETDATE())
end
SELECT * FROM userLoggedIn WHERE ????
GO