Maison >base de données >tutoriel mysql >Comment exécuter efficacement des procédures stockées et récupérer des résultats dans l'ASP classique ?

Comment exécuter efficacement des procédures stockées et récupérer des résultats dans l'ASP classique ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-10 10:22:41375parcourir

How to Efficiently Execute Stored Procedures and Retrieve Results in Classical ASP?

Exécution de procédures stockées ASP classiques et récupération des résultats : meilleures pratiques

Les développeurs ASP classiques rencontrent souvent des difficultés lorsqu'ils travaillent avec des procédures stockées SQL Server, notamment en ce qui concerne la récupération des résultats. Les réponses vides ou les jeux d'enregistrements fermés sont des problèmes courants, même lorsque la procédure doit renvoyer des données. Cela vient souvent de la négligence des paramètres cruciaux de SQL Server et d'une gestion inefficace des données dans le code ASP.

Une cause fréquente de résultats vides est de négliger l'utilisation de SET NOCOUNT ON dans la procédure stockée. Par défaut, SQL Server renvoie le nombre de lignes affectées, ce qui peut interférer avec le jeu de résultats réel. SET NOCOUNT ON garantit que seules les données sont renvoyées.

Un autre goulot d'étranglement en termes de performances est l'itération des données à l'aide de ADODB.Recordset. Cette approche peut être lente. Une méthode plus efficace consiste à récupérer l'ensemble des résultats dans un tableau pour un traitement ultérieur.

Approche optimisée pour la gestion des procédures stockées ASP classiques :

Les étapes suivantes détaillent une méthode optimisée pour exécuter des procédures stockées et récupérer des données dans Classic ASP :

  1. Instancier ADODB.Command : Créez un objet ADODB.Command et établissez une connexion à l'aide d'une chaîne de connexion valide ou d'un objet ADODB.Connection.

  2. Configurer les propriétés de la commande : Définissez la propriété CommandText sur le nom de la procédure stockée et la propriété CommandType sur adCmdStoredProc.

  3. Gérer les paramètres : Si la procédure stockée accepte des paramètres, utilisez la collection Parameters pour les ajouter, en spécifiant le type et la direction des données (par exemple, adParamInput).

  4. Exécuter et récupérer des données : Exécutez la commande en utilisant la méthode Execute. Au lieu de traiter directement le jeu d'enregistrements, utilisez la méthode GetRows pour charger efficacement l'intégralité du jeu de résultats dans un tableau à deux dimensions.

Exemple de code révisé :

Voici un exemple de code affiné illustrant ces améliorations :

<code class="language-vbscript">Const adParamInput = 1, adVarChar = 200
Dim conn_string, row, rows, ary_data

conn_string = "PROVIDER=SQLOLEDB;DATA SOURCE=X;DATABASE=Y;UID=Z;PWD=W;"

Set objCommandSec = CreateObject("ADODB.Command")
With objCommandSec
  .ActiveConnection = conn_string
  .CommandType = adCmdStoredProc
  .CommandText = "usp_Targets_DataEntry_Display"
  .Parameters.Append .CreateParameter("@userinumber", adVarChar, adParamInput, 10, inumber)
  .Parameters.Append .CreateParameter("@group", adVarChar, adParamInput, 50, "ISM")
  .Parameters.Append .CreateParameter("@groupvalue", adVarChar, adParamInput, 50, ismID)
  .Parameters.Append .CreateParameter("@targettypeparam", adVarChar, adParamInput, 50, targetType)

  Set rs = .Execute()
  If Not rs.EOF Then
    ary_data = rs.GetRows()
    rs.Close()
    Set rs = Nothing
  End If
End With
Set objCommandSec = Nothing

' Process data from the array
If IsArray(ary_data) Then
  rows = UBound(ary_data, 2)
  For row = 0 To rows
    Response.Write(ary_data(1, row) & "<br>") ' Example: Accessing the second column (index 1)
  Next
Else
  Response.Write("No data returned")
End If</code>

Ce code révisé récupère efficacement les données dans un tableau, évitant ainsi la surcharge de performances de l'itération du jeu d'enregistrements, conduisant à une exécution de procédures stockées plus rapide et plus fiable dans Classic ASP. N'oubliez pas de gérer les erreurs potentielles de manière appropriée dans un environnement de production.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn