Valeur de retour dans une procédure stockée SQL Server

Je suis en train d'utiliser une procédure stockée SQL Server avec l'ASP:

ALTER  PROCEDURE [dbo].[user_insert]
    @firstName NVARCHAR(50) ,
    @lastName NVARCHAR(50) ,
    @cityid INT ,
    @email NVARCHAR(100) ,
    @password NVARCHAR(12) ,
    @Affiliate INT
AS 
    BEGIN
        DECLARE @index1 INT
        SET @index1 = 0                      
        IF ( NOT EXISTS ( SELECT    * FROM      dbo.tbl_users
                          WHERE     user_email = @email )  ) 
            BEGIN                                  
                INSERT  INTO dbo.tbl_users
                        ( user_first_name ,
                          user_last_name ,
                          city_id ,
                          user_email ,
                          user_password ,
                          Affiliate_id
                        )
                VALUES  ( @firstName ,
                          @lastName ,
                          @cityid ,
                          @email ,
                          @password ,
                          @Affiliate
                        )
                SET @index1 = ( SELECT  @@IDENTITY
            END
        RETURN @index1 
    END

et l'ASP est

Set oCmd = Server.CreateObject("ADODB.Command")
oCmd.ActiveConnection = conn
oCmd.CommandText = "user_insert"
oCmd.CommandType = 4

oCmd.Parameters.Append oCmd.CreateParameter("firstName", 203, 1, 100, "1")
oCmd.Parameters.Append oCmd.CreateParameter("lastName", 203, 1, 100, "2" )
oCmd.Parameters.Append oCmd.CreateParameter("cityid", 3, 1, 2, 1)
oCmd.Parameters.Append oCmd.CreateParameter("email", 200, 1, 100, txtmail)
oCmd.Parameters.Append oCmd.CreateParameter("password", 203, 1, 12, "2" )
oCmd.Parameters.Append oCmd.CreateParameter("Affiliate", 3, 1, 3, 1)
oCmd.Parameters.Append oCmd.CreateParameter("@index1", 3, 2)
Set rs = oCmd.Execute
response.write oCmd.Parameters("@index1").Value &"<br>"
Set oCmd = Nothing

Si je exécutez le service pack de SQL Server terminal, ça fonctionne, mais lorsque j'utilise le code asp, si c'est un "nouvel utilisateur", je n'obtenez pas de valeur de retour "index1"

Que puis-je faire?

vous avez peut-être déjà utilisateur avec cette adresse email dans la table, vérifier que, depuis votre SP ne retourne pas/ne rien quand c'est vrai
Je ne parle pas de l'ASP, mais en général, je pense que vous avez besoin pour créer un paramètre avec un drapeau spécial qui signifie "c'est la SP paramètre de valeur de retour'. Pas sûr du nom, mais quand j'utilise ADO en Delphi, il est toujours nommé @RETURN_VALUE. Quelqu'un avec l'ASP de fond doit certainement en aider plus sur ce chef.

OriginalL'auteur user186585 | 2011-02-12