daniel_raMedlem sedan jan. 2002381 inlägg
Jag är inte riktigt med på hur fel fångas som orsakas av felaktigheter i en stored procedure.
Jag vill även kunna avbryta en stored procedure om vissa villkor inte uppfylls men även då vill jag skicka med ett felmeddelande som jag kan visa upp för mina användare.
om jag i sp:n gör exempelvis
SELECT @err = @@error IF @err <> 0 RETURN @err
så kan jag plocka upp felet och visa desciption för användare såhär. (asp)
On Error Resume Next
' kör sp
if Err.Number<>0 then
Response.Write "något blev fel " & Err.Description
end if
On Error Goto 0
Men om jag vill göra exempelvis såhär i sp:n :
if @ettvärde = @ettannatvärde
return någonting
vad ska jag returnera och kan jag returnera ett fel med ett felmeddelande
LarsGMedlem sedan dec. 200012 465 inlägg
Läs om raiseerror i manualen för T-sql
daniel_raMedlem sedan jan. 2002381 inlägg
jag förstod att man kunde göra såhär ungefär:
Raiserror(50000,10,1)
return @@ERROR
men detta innebär väl att jag måste skapa felmeddelanden för de errnumber som jag använder, kan jag inte skicka med en felbeskrivning med ERROR så att jag kan skicka samma errnumber med alla typer av fel och sen bara skriva ett fel till användaren med ett meddelande beroende på vad det är. Jag skulle nämligen vilja göra så mycket kontroller som möjligt redan i sp:n men jag vill ändå informera användaren om vad det är som inte är korrekt.
invecklarenMedlem sedan jan. 2008270 inlägg
Använd output-parameters för att returnera felvärden.
daniel_raMedlem sedan jan. 2002381 inlägg
Men är det det bästa och enda sättet att göra det på? Kan jag på något sätt skilja på fel som jag själv har triggat och andra fel. Jag vill vid fel som jag själv triggat bara visa en liten text till användaren om att vissa inmatade värden inte är korrekta eller att någonting annat inte stämmer överens. Vid andra typer av fel vill jag skicka användaren till en felsida och visa err.number,err.description och err.source samt logga vissa data.. Det kanske inte är rätt alls att göra med raiserror