Maison >base de données >SQL >Une brève discussion sur les procédures stockées de base de données

Une brève discussion sur les procédures stockées de base de données

步履不停
步履不停original
2019-06-14 11:25:3940399parcourir

Une brève discussion sur les procédures stockées de base de données

Qu'est-ce qu'une procédure stockée

Si vous avez été exposé à d'autres langages de programmation, il sera facile de comprendre que les procédures stockées sont simples. comme les méthodes.

Il s'avère que c'est une méthode, donc elle a un nom de méthode similaire, les variables à passer par la méthode et le résultat renvoyé, donc la procédure stockée a un nom de procédure stockée, des paramètres de procédure stockée et valeur de retour.

Avantages des procédures stockées :

  • La capacité des procédures stockées améliore considérablement la fonctionnalité et la flexibilité du langage SQL.
  • garantit la sécurité et l'intégrité des données.
  • Grâce à des procédures stockées, les utilisateurs sans autorisations peuvent accéder indirectement à la base de données sous contrôle, garantissant ainsi la sécurité des données.
  • Les procédures stockées permettent aux actions liées de se produire ensemble, préservant ainsi l'intégrité de la base de données.
  • Avant d'exécuter la procédure stockée, la base de données a analysé sa grammaire et sa syntaxe et a fourni un plan d'exécution optimisé. Ce processus compilé peut grandement améliorer les performances des instructions SQL.
  • peut réduire le trafic réseau.
  • Placez le programme informatique qui incarne les règles de l'entreprise dans le serveur de base de données pour un contrôle centralisé.

Les procédures stockées peuvent être divisées en procédures stockées système, procédures stockées étendues et procédures stockées définies par l'utilisateur

Procédures stockées système

Nous Jetons d'abord un coup d'œil aux procédures stockées système. Les procédures stockées système sont définies par le système et sont principalement stockées dans la base de données MASTER. Les noms commencent par "SP" ou "XP". Bien que ces procédures stockées système se trouvent dans la base de données MASTER,

Mais nous pouvons toujours appeler des procédures stockées système dans d'autres bases de données. Certaines procédures stockées système sont automatiquement créées dans la base de données actuelle lorsqu'une nouvelle base de données est créée.

Les procédures stockées système couramment utilisées sont :

  • exec sp_databases; --View database
  • exec sp_tables; --View table
  • exec sp_columns; étudiant ;--Afficher les colonnes
  • exec sp_helpIndex étudiant;--Afficher l'index
  • exec sp_helpConstraint étudiant;--Constraintes
  • exec sp_helptext 'sp_stored_procedures';--Afficher la procédure stockée création Instruction définie
  • exec sp_stored_procedures;
  • exec sp_rename student, stuInfo;--changer le nom de la table
  • exec sp_renamedb myTempDB, myDB;--changer le nom de la base de données
  • exec sp_defaultdb 'master', 'myDB';--Modifier la base de données par défaut du nom de connexion
  • exec sp_helpdb;--Aide de la base de données, interroger les informations de la base de données
  • exec sp_helpdb master;
  • exec sp_attach_db --attached database
  • exec sp_detach_db --owned database

Syntaxe de la procédure stockée :

Avant de créer une procédure stockée, parlons Parlons d'abord de la dénomination des procédures stockées. J'ai vu que plusieurs articles sur les procédures stockées aiment ajouter un préfixe lors de la création d'une procédure stockée. Il est important de prendre l'habitude d'ajouter un préfixe avant le nom d'une procédure stockée. Bien que ce ne soit qu’une petite chose, de petits détails déterminent souvent un grand succès ou un grand échec. J'ai vu que certaines personnes aiment ajouter des préfixes comme celui-ci, comme proc_name. Voir également ce préfixe usp_name. Le premier proc est l'abréviation de procédure, et le second sup signifie procédure utilisateur. Je préfère la première méthode, donc tous les noms de procédures stockées ci-dessous seront écrits dans la première méthode. Quant à l'écriture du nom, la nomenclature des chameaux est utilisée.

La syntaxe de création d'une procédure stockée est la suivante :

CREATE PROC[EDURE] 存储过程名 

@参数1 [数据类型]=[默认值] [OUTPUT] 

@参数2 [数据类型]=[默认值] [OUTPUT]

AS 

SQL语句

EXEC 过程名[参数]

Utilisation d'une instance de procédure stockée :

1. Sans paramètres

create procedure proc_select_officeinfo--(存储过程名)as select Id,Name from Office_Info--(sql语句)

exec proc_select_officeinfo--(调用存储过程)

2. Avec paramètres d'entrée

create procedure procedure_proc_GetoffinfoById ----  Name  dbo.Office_Info  Id=@Id----(存储过程名称之后,空格加上参数,多个参数中间以逗号分隔)

注:参数赋值是,第一个参数可以不写参数名称,后面传入参数,需要明确传入的是哪个参数名称

3. Avec paramètres d'entrée et de sortie

créer. procédure proc_office_info--( Nom de la procédure stockée)
@Id int,@Name varchar(20) sortie--(nom du paramètre type de paramètre) Les paramètres sortants doivent être ajoutés avec la sortie
comme
begin
select @Name=Name from dbo.Office_Info où Id=@Id --(sql Statement)
end

declare @houseName varchar(20) --Déclare une variable et récupère la valeur transmise par la procédure stockée
exec proc_office_info- -(nom de la procédure stockée)
4,@houseName output--(On dit que le paramètre doit ajouter une sortie. Si vous utilisez @variable = OUTPUT ici, une erreur sera signalée, donc changer la méthode d'écriture)

sélectionnez @houseName-- (Valeur d'affichage)

4 avec valeur de retour

create procedure proc_office_info--(存储过程名)
@Id int--(参数名 参数类型)as beginif(select Name from dbo.Office_Info where Id=@Id)=null --(sql语句)
beginreturn -1endelsebeginreturn 1end
end

declare @house varchar(20) --声明一个变量,获取存储过程传出来的值
exec @house=proc_office_info 2 --(调用存储过程,用变量接收返回值)--注:带返回值的存储过程只能为int类型的返回值
print @house

Pour plus d'articles techniques liés à SQL, veuillez visiter la colonne Tutoriel SQL pour apprendre !

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