Recommandé: ASP 3.0 Programmation avancée (douze) 4.2.3 Exemples d'instructions contenant côté serveur Cette section fournit quelques exemples de pages qui peuvent être utilisées pour expérimenter diverses instructions contenant de côté serveur. Ouvrez le sous-répertoire de l'exemple de page Web Chapitre 04, affichant les directives SSI et l'objet ASP Server & Rdqu
9.2.3 Procédures stockéesL'utilisation des procédures stockées est une zone où les objets de commande sont appliqués. Les procédures stockées (parfois appelées requêtes de stockage) sont des instructions de requête SQL qui sont prédéfinies dans une base de données.
Pourquoi devriez-vous créer et utiliser des procédures stockées au lieu d'utiliser des chaînes SQL directement dans votre code? Il y a plusieurs raisons principales:
· Les procédures stockées ont été compilées par la base de données. Il en résulte un plan d'exécution, de sorte que la base de données sait exactement ce qu'elle fera, accélérant ainsi l'exécution du processus.
Les procédures stockées sont généralement mises en cache par la base de données, ce qui les fait s'exécuter plus rapidement car ils ne sont pas tenus de lire à partir du disque pour le moment. Toutes les bases de données ne prennent pas en charge ce mécanisme de mise en cache. Par exemple, l'accès de Microsoft ne le prend pas en charge, mais SQL Server le prend en charge.
· En spécifiant que les tableaux de la base de données ne peuvent être modifiés que par des procédures stockées, les données peuvent être assurées pour être plus sécurisées. Cela signifie que les opérations SQL potentiellement dangereuses ne seront pas effectuées.
· Le code ASP peut être évité de mélanger avec de longues instructions SQL, ce qui rend le code ASP plus facile à maintenir.
· Tout le code SQL peut être stocké au centre du serveur.
· Les paramètres de sortie peuvent être utilisés dans les procédures stockées pour permettre le retour de l'ensemble d'enregistrements ou d'autres valeurs.
D'une manière générale, les procédures stockées sont presque toujours plus rapides que les instructions SQL comparables.
Pour utiliser les procédures stockées, utilisez simplement le nom de procédure stocké comme texte de commande et définissez le type correspondant. Par exemple, considérez l'exemple précédent d'un prix de livre mis à jour. Si vous créez une procédure stockée sur SQL Server, vous pouvez écrire du code:
Créer une procédure USP_updatePrices
COMME
Mettre à jour les titres
Prix réglé = Prix * 1.10
Où type = 'entreprise'
Pour la base de données d'accès de Microsoft, la même tâche peut être accomplie à l'aide d'une instruction de requête de mise à jour simple
Pour exécuter cette procédure stockée dans une page Web ASP, utilisez simplement le code suivant:
Définir cmDupDate = server.createObject (adodb.command)
cmDupdate.activeConnection = strConn
cmDupdate.commandText = usp_updatePrices
cmDupDate.CommandType = AdcMdStoredProc
cmdupdate.execute ,, adexecutenorecords
Il s'agit simplement d'exécuter une procédure stockée. Aucun ensemble d'enregistrements ne revient car les données sont à la mise à jour. Il est important de se rappeler que vous ne créez pas de plateaux d'enregistrements à moins que vous n'en avez vraiment besoin.
Bien que cela soit OK, il n'est pas très flexible, car il ne traite qu'à un seul type de livre. Une meilleure approche consiste à créer un processus qui nous permet de choisir un type de livre afin que nous n'ayons pas à créer de processus pour chaque type de livre. De plus, la mise à jour fixe de 10% peut être supprimée, ce qui permet une meilleure flexibilité. Alors, comment puis-je faire cela? C'est très simple, utilisez des paramètres.
1. Paramètre
Les paramètres (ou variables) des procédures stockés sont les mêmes que ceux des procédures et fonctions générales. Ils peuvent être transmis dans la fonction et la fonction peut ensuite utiliser sa valeur. Les procédures stockées dans SQL Server (il en va de même pour les autres bases de données, y compris l'accès) ont cette fonction.
Pour que les procédures stockées gèrent plusieurs types de livres et permettent même aux utilisateurs de spécifier une augmentation (ou une diminution) des prix, certains paramètres doivent être ajoutés:
Créer une procédure USP_updatePrices
@Type char (12),
@Percent Money
COMME
Mettre à jour les titres
Set Price = Prix * (1 @Percent / 100)
Où type = @type
Maintenant, la procédure stockée USP_updatePrices prend deux paramètres:
· L'un est le type de livre (@type).
· L'un est le pourcentage de changements de prix du livre (@Percent).
Comme les fonctions de VBScript, ces paramètres sont des variables. Cependant, contrairement à VBScript et à d'autres langages de script, les variables de ces langages de script sont tous des types de variables, tandis que les variables SQL ont des types définis (char, argent, etc.). La spécification de dénomination des variables SQL doit être suivie, c'est-à-dire que la variable doit commencer par le symbole @.
Notez que nous avons des pourcentages passés dans ce processus en tant qu'ender (comme 10 signifie 10%) plutôt que comme une valeur fractionnaire. Cela rend les procédures stockées un peu plus intuitives.
2. Collection des paramètres
Donc, maintenant il y a une procédure stockée avec des paramètres, mais comment l'appelez-vous via ADO? Nous avons vu comment appeler des procédures stockées sans paramètres avec des objets de commande, et en fait, il n'y a pas de différence entre eux. La différence est l'utilisation de collections de paramètres.
La collection de paramètres contient des objets de paramètre pour chaque paramètre dans la procédure stockée. Cependant, ADO ne sait pas automatiquement quels sont ces paramètres, ils doivent donc être créés en utilisant la méthode CreateParameter, sous la forme suivante:
Set Paramètre = Command.CreateParAmètre (nom, [Type], [Direction], [Taille], [Valeur])
Les paramètres et descriptions sont présentés dans le tableau 9-3:
Tableau 9-3 Paramètres et descriptions de la méthode CreateParameter
paramètre
illustrer
Nom
Nom du paramètre. Il s'agit du nom du paramètre dans la collection de paramètres, pas le nom du paramètre dans la procédure stockée. Cependant, utiliser le même nom est une bonne pratique
Taper
Le type de données du paramètre. Il peut s'agir d'une constante d'addatatype, voir l'annexe pour plus de détails
Direction
La direction du paramètre indique si le paramètre fournit des informations à la procédure stockée ou si la procédure stockée renvoie des informations à l'ADO. Cela peut être l'une des valeurs suivantes:
Adparaminput, le paramètre est le paramètre d'entrée transmis à la procédure stockée
AdParamoutput, le paramètre est le paramètre de sortie récupéré à partir de la procédure stockée
AdParaminputOutput, les paramètres peuvent être utilisés comme paramètres d'entrée et de sortie
AdParAmreturnValue, ce paramètre contient l'état renvoyé par la procédure stockée
Taille
Longueur du paramètre. Pour les types de longueur fixe, tels que les entiers, cette valeur peut être ignorée
Valeur
Valeur du paramètre
Une fois le paramètre créé, il peut être ajouté à la collection de paramètres, par exemple:
Set Parvalue = cmDupDate.CreateParAmètre (@Type, AdvarWchar, AdParaminput, _
12, entreprise)
CMDUPDATE.PARAMETERS.APPENDRE CARVALUE
Set Parvalue = cmDupDate.CreateParAmètre (@percent, adcurrency, _
adparaminput ,, 10)
CMDUPDATE.PARAMETERS.APPENDRE CARVALUE
Il n'est pas nécessaire de créer explicitement un objet pour enregistrer les paramètres, le type de variant par défaut peut déjà fonctionner assez bien. Si vous ne souhaitez pas créer de variable, vous pouvez également prendre des raccourcis, comme le code suivant:
cmdupdate.parameters.append = _
cmDupdate.createParameter (@percent, adcurrency, adparaminput ,, 10)
Cela utilise la méthode CreateParAmètre pour renvoyer un objet de paramètre et le reçoit avec la méthode d'ajout. Cette méthode fonctionne plus rapidement que l'utilisation de variables, mais allonge la ligne de code, ce qui la rend moins lisible. Vous pouvez choisir l'une de ces méthodes en fonction de vos passe-temps.
Une fois les paramètres ajoutés à la collection de paramètres, ils y sont conservés, de sorte que chaque paramètre ne se voit pas nécessairement une valeur lorsque le paramètre est créé. La valeur du paramètre peut être définie à tout moment avant l'exécution de la commande. Par exemple:
cmdupdate.parameters.append = _
cmDupdate.createParameter (@percent, adcurrency, adparaminput)
cmDupdate.Parameters (@percent) = 10
Le chapitre précédent a mentionné qu'il existe plusieurs façons d'accéder aux valeurs dans une collection, et la collection de paramètres n'est pas différente. L'exemple ci-dessus utilise le nom du paramètre pour récupérer les paramètres dans l'ensemble, ou peut également être recherché à l'aide des numéros d'index:
cmDupdate.Parameters (0) = 10
Le code ci-dessus attribue le premier paramètre dans le jeu de paramètres (le jeu de paramètres numéroté à partir de 0)
Partager: connaissances connexes sur les objets d'erreur ASP avancés pour l'application ASP Dans VBScript, il existe une instruction ONERRORRESUMENEXT qui fait ignorer l'interprète de script à ignorer les erreurs d'exécution et à continuer l'exécution du code de script. Ensuite, le script peut vérifier la valeur de la propriété Err.Number pour déterminer si une erreur s'est produite. Si une erreur se produit, une valeur non nulle est renvoyée