2015-08-13 4 views
1

Je travaille avec ASP classique et en utilisant la procédure stockée. Je dois obtenir la valeur de la procédure stockée hors paramètre. Ceci est mon codesortir la valeur du paramètre de la procédure stockée dans l'asp classique

<% @LANGUAGE="VBSCRIPT" CODEPAGE="65001" %> 
<!-- METADATA TYPE="TypeLib" NAME="Microsoft ADO Type Library" UUID="{00000205-0000-0010-8000-00AA006D2EA4}" --> 
<% 

Dim value 
    Dim i 

set con = Server.CreateObject("ADODB.Connection") 
con.Open "Provider=SQLOLEDB;Server=aliba\SQLEXPRESS;Database=dummySP;Trusted_Connection=Yes;"  
Set Comm = Server.CreateObject("ADODB.Command") 
comm.ActiveConnection = con 
comm.CommandText = "sp_dummy" 
'comm.NamedParameters=true 
comm.CommandType = adCmdStoredProc 
comm.Parameters.Append comm.CreateParameter("@weight" , adVarchar,adParamInput, 50, "hello") 
'comm.Parameters.Append comm.CreateParameter("PRODUCT", adVarchar, adParamInput,50, producttype) 
'comm.Parameters.Append comm.CreateParameter("ACCOUNT", adVarchar, adParamInput,100, "") 


    comm.Parameters.Append comm.CreateParameter("@pris", adVarchar, adParamOutput,50) 'output parameters 
    'i=comm.Execute 
    comm.Execute 
    value=comm.Parameters("@pris").Value 
    Response.Write("Value is") 
    Response.Write(value) 

La valeur de pris ne s'affiche pas en sortie. Je n'ai aucune idée de ce qui ne va pas.

J'ai suivi ce lien (Calling SQL Stored Procedure with Output Parameter in VBScript) mais n'obtient pas le succès

Il me donne erreur suivant

valeur est

erreur objet Response 'ASP 0185: 8002000e'

Propriété par défaut manquante

/StoreProcedure.asp , ligne 0

Une propriété par défaut n'a pas été trouvée pour l'objet.

Voici ma procédure stockée

ALTER procedure [dbo].[sp_dummy] 
    @weight nvarchar(50), 
    @pris nvarchar(50)= null out 
    as 
    begin 

    select @pris = pris from sp_dummy_table where weight= @weight 
    end 
+1

Vous ne pouvez pas obtenir la valeur d'un paramètre 'adParamOutput' tant que ADODB.Command' n'a pas exécuté la méthode' Execute() '. Execute *() doit s'exécuter pour récupérer la sortie de la procédure stockée et remplir le paramètre. L'erreur que je pense est parce que votre ligne 'value =' est incorrecte, déplacez-la au-dessous de 'comm.execute' et essayez' value = comm.Parameters ("Pris"). Value'. Souvenez-vous également de '.Append' tous les paramètres dans l'ordre prévu par la procédure stockée ou vous aurez des problèmes. – Lankymart

+0

@Lankymart Je viens de faire ce que vous avez dit, mais toujours me donner la même erreur. –

+0

dois-je ajouter quelque chose d'autre, il suffit d'éditer le code –

Répondre

0

Je suggère que vous fermez votre SP avec un SELECT afin que vous puissiez obtenir la valeur d'un Recordset.

SELECT [email protected] 

Puis dans votre code ASP:

Set rsComm = comm.Execute 
If Not rsComm.EOF Then 
    myPRIS = rsComm.Fields("OutPRIS").Value 
Else 
    myPRIS = Null 
End If 
rsComm.Close 
Set rsComm = Nothing 

Hope this helps.

+0

Alors, à quoi cela sert-il d'utiliser le paramètre de sortie en substituant simplement une méthode à une autre. – Lankymart

+0

J'ai offert la suggestion de ma méthode préférée et bien connue. Cela satisfait l'objectif de retourner la valeur. Je ne suis pas sûr d'être d'accord pour dire que l'offre d'une alternative est en fait «down-vote» digne. – CLaFarge

+0

Ce n'est pas "bien connu" en fait est moins efficace que juste renvoyer une variable de sortie. Il n'y a rien de mal avec l'approche OP a juste besoin de s'assurer qu'il est exécuté correctement. – Lankymart