2011-08-03 1 views
1

J'ai une page ASP appelant une procédure stockée avec des valeurs retournées ET des paramètres OUTPUT.La page ASP ne s'affiche pas Procédure stockée OUTPUT

Les paramètres de sortie ne sont pas affichées et que je ne comprends pas pourquoi:

<% 
    dim Objrs, cmd 
    set Objrs = Server.CreateObject("ADODB.RecordSet") 
    set cmd = Server.CreateObject("ADODB.Command") 
    set conn = Server.CreateObject("ADODB.Connection") 
    conn.Open strConnect 
    set cmd.ActiveConnection = conn 
    cmd.CommandText="MKTG_Current" 
    cmd.CommandType=adCmdStoredProc 
    cmd.Parameters.Append cmd.CreateParameter("@added", 135, 2) 
    cmd.Parameters.Append cmd.CreateParameter("@named", 200, 2, 50) 

    set Objrs = cmd.Execute 
%> 
    </div> 
    <div id="recent-news-box" class="rounded-corners-top dropshadow"> 
     <h3 class="border-dashed-b">Updated on: <%=Objrs.state%></h3> 
     <div> 
<% 
    While Not Objrs.EOF 
     Response.Write Objrs("Subject") 
     Objrs.MoveNext 
    Wend 
    name_of_table = cmd.Parameters("@named").value 
    added = cmd.Parameters("@added").value 
    set cmd = nothing 
    set Objrs = nothing 
    conn.close 
    set conn = nothing 
     Response.Write name_of_table 
     Response.Write added  
%> 
      </div> 
     </div> 
     </div> 

J'ai essayé de changer la position des éléments de sortie sans succès.

Répondre

0

Il y a un peu de clunkiness en raison de la manière dont ADO renvoie les résultats de commande à un jeu d'enregistrements et en tant que paramètres de sortie.

Ils sont disponibles après la recordset retourné est fermé, de sorte que cet ordre devrait fonctionner:

set Objrs = nothing 

    name_of_table = cmd.Parameters("@named").value 
    added = cmd.Parameters("@added").value 

    set cmd = nothing 
    conn.close 
    set conn = nothing 

    Response.Write name_of_table 
    Response.Write added 

Une alternative est de laisser le code tel qu'il est ajouter passer à un curseur côté client avec:

conn.Open strConnect 
    conn.CursorLocation = 3 '//aduseclient 
    set cmd.ActiveConnection = conn 

(vérifiez aussi que votre utilisation de adCmdStoredProc ne doit pas être remplacée par sa valeur numérique si vous n'êtes pas lié à un typelib)

+0

EXCELLENT! Le changement de curseur au client a fait l'affaire! – Techmaniac

Questions connexes