/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
[MSSQL2000] Brugervalidering med RAISERROR
Fra : Jens Gyldenkærne Cla~


Dato : 05-12-02 14:20

Jeg har en webapplikation hvor en række brugere skal have adgang
til at redigere deres egne dokumenter. Selve login-proceduren
ligger i asp, men som en ekstra sikkerhed vil jeg gerne tjekke om
en bruger har lov til at udføre en handling på et dokument direkte
i databasen.

Til det oprettede jeg følgende sp:
'***************************************************
CREATE PROC UserTjek_sp (@userID int, @dokID int)
AS
   IF NOT EXISTS
      (SELECT 't'
      FROM dokumenter
      WHERE dokumentID = @dokID
      AND ejerID = @userID)

         RAISERROR(
         'Adgangsfejl!
Enten eksisterer dokumentet ikke eller også har brugeren ikke
adgang til at redigere det pågældende dokument.
Oplysninger vedr. fejlen: BrugerID: %d, DokumentID: %d',
         16, 1, @userID, @dokID)
'***************************************************

Den kaster en fejl hvis det er en ugyldig bruger/dokument-
kombination - og den virker sådan set fint nok.

Men hvis jeg skal have stoppet sp'en skal jeg efterfølgende tjekke
værdien af @@ERROR. Er det muligt at få sp'en stoppet så snart der
er en @@ERROR-værdi større end nul?
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma
(rettelser modtages gerne i dk.kultur.sprog)

 
 
Peter Lykkegaard (05-12-2002)
Kommentar
Fra : Peter Lykkegaard


Dato : 05-12-02 14:49

Som svar på skriblerier nedfældet af Jens Gyldenkærne Clausen :


> Men hvis jeg skal have stoppet sp'en skal jeg efterfølgende tjekke
> værdien af @@ERROR. Er det muligt at få sp'en stoppet så snart der
> er en @@ERROR-værdi større end nul?

Er det ikke "Return"? - Uden at have checket nærmere

mvh/Peter Lykkegaard



Peter Lykkegaard (05-12-2002)
Kommentar
Fra : Peter Lykkegaard


Dato : 05-12-02 15:15

Som svar på skriblerier nedfældet af Peter Lykkegaard :

> Som svar på skriblerier nedfældet af Jens Gyldenkærne Clausen :
>
>
>> Men hvis jeg skal have stoppet sp'en skal jeg efterfølgende tjekke
>> værdien af @@ERROR. Er det muligt at få sp'en stoppet så snart der
>> er en @@ERROR-værdi større end nul?
>
> Er det ikke "Return"? - Uden at have checket nærmere
>

<Fra TFM (BOL)>
Exits unconditionally from a query or procedure. RETURN is immediate and
complete and can be used at any point to exit from a procedure, batch, or
statement block. Statements following RETURN are not executed.
</Fra TFM (BOL)>

mvh/Peter Lykkegaard



Jens Gyldenkærne Cla~ (05-12-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 05-12-02 15:18

Peter Lykkegaard skrev:

> Er det ikke "Return"? - Uden at have checket nærmere

Jo. Jeg skal bare placere linjen

IF @@ERROR > 0 RETURN

i min kaldende sp (det virker ikke at have den i selve usertjek-
proceduren).

Takker.
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma
(rettelser modtages gerne i dk.kultur.sprog)

Peter Lykkegaard (05-12-2002)
Kommentar
Fra : Peter Lykkegaard


Dato : 05-12-02 15:48

Som svar på skriblerier nedfældet af Jens Gyldenkærne Clausen :

> Peter Lykkegaard skrev:
>
>> Er det ikke "Return"? - Uden at have checket nærmere
>
> Jo. Jeg skal bare placere linjen
>
> IF @@ERROR > 0 RETURN
>
> i min kaldende sp (det virker ikke at have den i selve usertjek-
> proceduren).
>
Burde det ikke være

IF @@ERROR > 0 RETURN @@ERROR

?

Så får du jo dit fejlnummer fra SP'en med ud - hvis du vil

mvh/Peter Lykkegaard



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste