Qu'est-ce qu'une procédure stockée ?
définition:
Écrivez à l'avance des tâches couramment utilisées ou très complexes avec des instructions SQL et stockez-les sous un nom spécifié. Ensuite, lorsque vous souhaitez demander à la base de données de fournir à l'avenir des services avec les mêmes fonctions que les procédures stockées définies, il vous suffit d'appeler exécuter. . Commandes de saisie semi-automatique.
À ce stade, quelqu'un peut se demander : une procédure stockée n'est donc qu'un ensemble d'instructions SQL ?
Pourquoi Microsoft souhaite-t-il ajouter cette technologie ?
Alors, quelle est la différence entre les procédures stockées et les instructions SQL ordinaires ?
Avantages des procédures stockées :
1. Les procédures stockées ne sont compilées que lors de leur création. Il n'est pas nécessaire de recompiler chaque fois que la procédure stockée est exécutée ultérieurement. Généralement, les instructions SQL sont compilées une fois à chaque exécution, l'utilisation de procédures stockées peut donc améliorer l'exécution. vitesse de la base de données.
2. Lors de l'exécution d'opérations complexes sur la base de données (telles que Mettre à jour, Insérer, Requête, Supprimer sur plusieurs tables), cette opération complexe peut être encapsulée dans une procédure stockée et utilisée conjointement avec le traitement transactionnel fourni par la base de données.
3. Les procédures stockées peuvent être réutilisées, ce qui peut réduire la charge de travail des développeurs de bases de données
4. Haute sécurité, vous pouvez définir que seul un certain utilisateur a le droit d'utiliser le processus stocké spécifié
Types de procédures stockées :
1. Procédures stockées système : commençant par sp_, utilisées pour configurer le système, obtenir des informations et les travaux de gestion associés, tels que sp_help, qui est utilisé pour obtenir des informations pertinentes sur l'objet spécifié.
2. La procédure stockée étendue commence par XP_ et est utilisée pour appeler les fonctions fournies par le système d'exploitation.
maître d'exécution..xp_cmdshell 'ping 10.8.16.1'
3. Procédures stockées définies par l'utilisateur, c'est ce que nous appelons procédures stockées
Formats courants
Créer une procédure nom_procédure
[@parameter data_type][output]
[avec]{recompiler|chiffrement}
comme
ql_statement
expliquer:
sortie : indique que ce paramètre peut être renvoyé
avec {recompilation|cryptage}
recompiler : signifie que cette procédure stockée sera recompilée à chaque exécution.
chiffrement : le contenu de la procédure stockée créée sera chiffré
comme:
Le contenu du livre de table est le suivant
Prix du titre de livre numéroté
001 Introduction au langage C30$
002 Développement de rapport PowerBuilder52 $
Exemple 1 : procédure stockée pour interroger le contenu de la table Book
créer un proc query_book
comme
sélectionnez * dans le livre
aller
exécutable query_book
Exemple 2 : ajouter un enregistrement au livre de table et interroger le montant total de tous les livres de cette table
Créer un proc insert_book
@param1 char(10),@param2 varchar(20),@param3 argent,@param4 argent sortie
avec cryptage ----------cryptage
comme
insérer un livre (numéro, titre du livre, prix) Valeurs (@param1,@param2,@param3)
sélectionnez @param4=sum(price) dans le livre
aller
Exemple d'exécution :
déclarer de l'argent @total_price
exec insert_book '003', 'Guide de développement de Delphi Control', 100 $, @total_price
print 'Le montant total est'+convert(varchar,@total_price)
aller
Trois types de valeurs de retour des procédures stockées :
1. Renvoyez l'entier avec Return
2. Renvoie les paramètres au format de sortie
3.Ensemble d'enregistrements
La différence entre les valeurs renvoyées :
La sortie et le retour peuvent être reçus sous forme de variables dans le programme batch, et le jeu d'enregistrements est renvoyé au client qui exécute le batch.
Exemple 3 : Il existe deux tables, Produit et Commande, avec le contenu suivant :
Produit
Numéro de produit Nom du produit Quantité commandée par le client
001 stylo 30
002 pinceau 50
003 Crayon 100
Commande
Numéro de produit Nom du client Dépôt client
001 District de Nanshan30 $
002 District de Luohu50 $
003 District de Baoan4 $
Veuillez utiliser le numéro comme condition de connexion pour connecter les deux tables dans une table temporaire. Cette table contient uniquement le nom du produit. Montant total.
Montant total = dépôt * quantité commandée, la table temporaire est placée en cours de stockage
Le code est le suivant :
Créer un processus temp_sale
comme
sélectionnez a. Numéro de produit, a. Nom du produit, b. Nom du client, b. Dépôt client, a. Quantité commandée par le client* b. Dépôt client comme montant total
dans #temptable à partir du produit a jointure interne Commande b sur a.numéro de produit = b.numéro de produit
si @@erreur=0
imprimer 'Bien'
autre
imprimer 'Échec'