[ASP] Errormelding uit stored procedure teruggeven aan ASP

Pagina: 1
Acties:

  • Kamikazi
  • Registratie: Juli 2001
  • Niet online
Het volgende is het geval: ik heb een stored procedure in Microsoft SQL Server 2000, en die wil ik zo maken dat eventuele error IDs worden teruggeven aan het ASP script wat de stored procedure aanroept.

Ik heb de volgende stored procedure gemaakt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
ALTER PROCEDURE sp_deletePoll
    (
        @pollID AS INT
    )

AS

SELECT
    pollOnline
FROM Poll
WHERE
    pollID=@pollID
AND
    pollOnline = 1

IF @@ROWCOUNT = 0
BEGIN

DECLARE @ERRORNUMBER AS INT

BEGIN TRANSACTION

DELETE 
FROM 
    PollLedenAntwoorden
WHERE 
    pollID = @pollID

IF @@ERROR > 0 
    SET @ERRORNUMBER = @@ERROR

DELETE 
FROM 
    PollAntwoorden
WHERE 
    pollID = @pollID

DELETE 
FROM 
    Poll
WHERE 
    pollID = @pollID

IF @ERRORNUMBER > 0 
    ROLLBACK TRANSACTION
ELSE
    COMMIT TRANSACTION

END


Wat ik uit mijn zoektocht heb begrepen, is dat je het ID van de error in een variabele stopt, en deze dan terugstuurt naar je ASP script. Maar ik kan nergens vinden hoe dat terugsturen dan moet. Ik moet toch bij het declaren van de variabele OUTPUT gebruiken? Maar waar dan!? ;(

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 14-08 12:38

Crazy D

I think we should take a look.

Volgens mij gaat
code:
1
2
IF @@ERROR > 0 
    SET @ERRORNUMBER = @@ERROR

niet helemaal het juiste resultaat geven. Als ik het goed herinner wordt @@error dan op 0 gezet, omdat de IF goed ging....
Je kunt met output params werken, maar wat ik zelf nog weleens doe, is een 0 of een 1 (in een recordset) teruggeven om aan te geven of iets gelukt is, en er eventueel nog een melding bij zetten
code:
1
2
3
select 0 as "success", 'poll kon niet worden verwijderd' as "melding"
of
select 1 as "success", '' as "melding"

Als je het met een output param wilt doen, moet je die idd met OUTPUT erbij neerzetten
code:
1
2
create procedure blah(@input int, @output int OUTPUT) as
...

Exact expert nodig?


Verwijderd

Misschien kun je hier wat mee, hiermee haal ik een waarde uit mijn stored procedure terug

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Function RunSPReturnInteger(ByVal strSP As String, ParamArray params() As Variant) As Long 'adInterger is really a VB Long
On Error GoTo ErrorHandle
    
    ' Create ADO objects
    Dim cmd As ADODB.Command
    Set cmd = New ADODB.Command
    
    ' Initilize the ADODB.Command Object
    cmd.ActiveConnection = GetConnectionString()
    cmd.CommandText = strSP
    cmd.CommandType = adCmdStoredProc
    collectParams cmd, params
    
    ' Create the output parameter
    cmd.Parameters.Append cmd.CreateParameter("@iID", adInteger, adParamOutput, 4)
    
    ' Execute and retrieve the output parameter
    cmd.Execute , , adExecuteNoRecords
    RunSPReturnInteger = cmd.Parameters("@iID").Value
    
    'Set cmd.ActiveConnection = Nothing
    ' Free objects from memory
    Set cmd = Nothing
    
    Exit Function
ErrorHandle:
    Set cmd = Nothing
    RaiseError Err.Description, Err.Number, "CDatabase", "RunSPReturnInteger"
End Function


Hoop dat ik je hiermeer heb kunnen helpen.