Qu'est-ce qu'une procédure stockée? Comment travaillent-ils? Quelle est la composition d'une procédure stockée (chaque doit doit être une procédure stockée)?
Les procédures stockées sont un lot d'instructions SQL qui peuvent être exécutées de plusieurs manières. La plupart des principaux DBM prennent en charge les procédures stockées. Cependant, tous ne le font pas. Vous devrez vérifier avec la documentation d'aide de votre SGBD spécifique pour des détails spécifiques. Comme je connais le mieux SQL Server, je l’utiliserai comme exemple.
Pour créer une procédure stockée, la syntaxe est assez simple:
CREATE PROCEDURE <owner>.<procedure name>
<Param> <datatype>
AS
<Body>
Donc par exemple:
CREATE PROCEDURE Users_GetUserInfo
@login nvarchar(30)=null
AS
SELECT * from [Users]
WHERE ISNULL(@login,login)=login
Un avantage des procédures stockées est que vous pouvez centraliser la logique d'accès aux données dans un seul endroit, ce qui est ensuite facile à optimiser pour les administrateurs de bases de données. Les procédures stockées présentent également un avantage en matière de sécurité en ce sens que vous pouvez accorder des droits d'exécution sur une procédure stockée, sans que l'utilisateur n'ait besoin d'autorisations de lecture/écriture sur les tables sous-jacentes. C'est une bonne première étape contre l'injection SQL.
Les procédures stockées comportent des inconvénients, essentiellement la maintenance associée à votre opération de base CRUD . Supposons que pour chaque table, vous avez une insertion, une mise à jour, une suppression et au moins une sélection basée sur la clé primaire, cela signifie que chaque table aura 4 procédures. Maintenant, prenons une base de données de taille décente de 400 tables, et vous avez 1600 procédures! Et cela en supposant que vous n’ayez pas de doublons comme vous le ferez probablement.
C’est là que l’utilisation d’un ORM ou d’une autre méthode pour générer automatiquement vos opérations CRUD de base a une tonne de mérite.
Une procédure stockée est un ensemble d'instructions SQL précompilées utilisées pour effectuer une tâche spéciale.
Exemple: si j'ai une table Employee
Employee ID Name Age Mobile
---------------------------------------
001 Sidheswar 25 9938885469
002 Pritish 32 9178542436
Je récupère d'abord la table Employee
:
Create Procedure Employee details
As
Begin
Select * from Employee
End
Pour exécuter la procédure sur SQL Server:
Execute Employee details
--- (Employee details is a user defined name, give a name as you want)
Ensuite, j'insère la valeur dans la table des employés.
Create Procedure employee_insert
(@EmployeeID int, @Name Varchar(30), @Age int, @Mobile int)
As
Begin
Insert Into Employee
Values (@EmployeeID, @Name, @Age, @Mobile)
End
Pour exécuter la procédure paramétrée sur SQL Server:
Execute employee_insert 003,’xyz’,27,1234567890
--(Parameter size must be same as declared column size)
Exemple: @Name Varchar(30)
Dans la table Employee
, la taille de la colonne Name
doit être varchar(30)
.
Une procédure stockée est un groupe d'instructions SQL créées et stockées dans la base de données. Une procédure stockée acceptera les paramètres d'entrée afin qu'une seule procédure puisse être utilisée sur le réseau par plusieurs clients utilisant des données d'entrée différentes. Une procédure stockée réduira le trafic réseau et augmentera les performances. Si nous modifions une procédure stockée, tous les clients recevront la procédure stockée mise à jour.
Exemple de création d'une procédure stockée
CREATE PROCEDURE test_display
AS
SELECT FirstName, LastName
FROM tb_test;
EXEC test_display;
Avantages de l'utilisation de procédures stockées
Une procédure stockée permet une programmation modulaire.
Vous pouvez créer la procédure une fois, la stocker dans la base de données et l'appeler autant de fois que nécessaire dans votre programme.
Une procédure stockée permet une exécution plus rapide.
Si l'opération nécessite une grande quantité de code SQL effectuée de manière répétitive, les procédures stockées peuvent être plus rapides. Elles sont analysées et optimisées lors de leur première exécution et une version compilée de la procédure stockée reste dans une mémoire cache pour une utilisation ultérieure. Cela signifie que la procédure stockée n'a pas besoin d'être reparsée et réoptimisée à chaque utilisation, ce qui entraîne des temps d'exécution beaucoup plus rapides.
Une procédure stockée peut réduire le trafic réseau.
Une opération nécessitant des centaines de lignes de code Transact-SQL peut être effectuée via une seule instruction qui exécute le code dans une procédure, plutôt qu'en envoyant des centaines de lignes de code sur le réseau.
Les procédures stockées offrent une meilleure sécurité à vos données
Les utilisateurs peuvent obtenir l'autorisation d'exécuter une procédure stockée même s'ils ne sont pas autorisés à exécuter directement les instructions de la procédure.
Dans SQL Server, nous avons différents types de procédures stockées:
Les procédures stockées dans System sont stockées dans la base de données master et commencent par un préfixe sp_
. Ces procédures peuvent être utilisées pour effectuer diverses tâches afin de prendre en charge les fonctions SQL Server pour les appels d’applications externes dans les tables système.
Exemple: sp_helptext [StoredProcedure_Name]
Les procédures mémorisées définies par l'utilisateur sont généralement stockées dans une base de données d'utilisateurs et sont généralement conçues pour effectuer les tâches de la base de données d'utilisateurs. Lors de la codification de ces procédures, n’utilisez pas le préfixe sp_
car, si nous utilisons d’abord le préfixe sp_
, la base de données master sera vérifiée, puis la base de données définie par l’utilisateur.
Les procédures stockées étendues sont les procédures qui appellent des fonctions à partir de fichiers DLL. De nos jours, les procédures stockées étendues sont obsolètes pour la raison qu'il serait préférable d'éviter d'utiliser des procédures stockées étendues.
En règle générale, une procédure stockée est une "fonction SQL". Ils ont:
-- a name
CREATE PROCEDURE spGetPerson
-- parameters
CREATE PROCEDURE spGetPerson(@PersonID int)
-- a body
CREATE PROCEDURE spGetPerson(@PersonID int)
AS
SELECT FirstName, LastName ....
FROM People
WHERE PersonID = @PersonID
Ceci est un exemple axé sur T-SQL. Les procédures stockées peuvent exécuter la plupart des instructions SQL, renvoyer des valeurs scalaires et basées sur des tables et sont considérées comme plus sécurisées car elles empêchent les attaques par injection SQL.
Pensez à une situation comme celle-ci,
REMARQUE:
Une procédure stockée est principalement utilisée pour effectuer certaines tâches sur une base de données. Par exemple
Une procédure stockée est utilisée pour extraire des données, modifier des données et supprimer des données dans la table de base de données. Il n'est pas nécessaire d'écrire une commande SQL complète chaque fois que vous souhaitez insérer, mettre à jour ou supprimer des données dans une base de données SQL.
Une procédure stockée n'est rien d'autre qu'un groupe d'instructions SQL compilées dans un seul plan d'exécution.
Exemple: création d'une procédure stockée
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE GetEmployee
@EmployeeID int = 0
AS
BEGIN
SET NOCOUNT ON;
SELECT FirstName, LastName, BirthDate, City, Country
FROM Employees
WHERE EmployeeID = @EmployeeID
END
GO
Modifier ou modifier une procédure stockée:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE GetEmployee
@EmployeeID int = 0
AS
BEGIN
SET NOCOUNT ON;
SELECT FirstName, LastName, BirthDate, City, Country
FROM Employees
WHERE EmployeeID = @EmployeeID
END
GO
Supprimer ou supprimer une procédure stockée:
DROP PROCEDURE GetEmployee
Une procédure stockée est un ensemble précompilé d'une ou plusieurs instructions SQL qui effectuent une tâche spécifique.
Une procédure stockée doit être exécutée de manière autonome à l'aide de EXEC
Une procédure stockée peut renvoyer plusieurs paramètres
Une procédure stockée peut être utilisée pour implémenter transact
"Qu'est-ce qu'une procédure stockée" est déjà répondu dans d'autres messages ici. Ce que je vais poster est un moyen moins connu d’utiliser une procédure stockée. C'est grouping stored procedures
ou numbering stored procedures
.
Référence de syntaxe
; number
selon this
Un entier facultatif utilisé pour regrouper les procédures du même nom. Ces procédures groupées peuvent être supprimées ensemble à l’aide d’une seule instruction DROP PROCEDURE.
Exemple
CREATE Procedure FirstTest
(
@InputA INT
)
AS
BEGIN
SELECT 'A' + CONVERT(VARCHAR(10),@InputA)
END
GO
CREATE Procedure FirstTest;2
(
@InputA INT,
@InputB INT
)
AS
BEGIN
SELECT 'A' + CONVERT(VARCHAR(10),@InputA)+ CONVERT(VARCHAR(10),@InputB)
END
GO
Utilisation
exec FirstTest 10
exec FirstTest;2 20,30
Résultat
Une autre tentative
CREATE Procedure SecondTest;2
(
@InputA INT,
@InputB INT
)
AS
BEGIN
SELECT 'A' + CONVERT(VARCHAR(10),@InputA)+ CONVERT(VARCHAR(10),@InputB)
END
GO
Résultat
Msg 2730, Niveau 11, Etat 1, Procédure SecondTest, Ligne 1 [Ligne de départ lot 3] Impossible de créer la procédure 'SecondTest' avec un numéro de groupe de 2 car une procédure portant le même nom et un numéro de groupe de 1 n'existe pas actuellement dans la base de données . Doit exécuter CREATE PROCEDURE 'SecondTest'; 1 en premier.
Références:
MISE EN GARDE
pour simple,
Procédure stockée are Programmes stockés , Programme/fonction stocké dans la base de données.
Chaque programme stocké contient un corps qui consiste en une instruction SQL. Cette instruction peut être une instruction composée de plusieurs instructions séparées par des points-virgules (;).
CREATE PROCEDURE dorepeat(p1 INT)
BEGIN
SET @x = 0;
REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;
END;
Dans un SGBD, une procédure stockée est un ensemble d'instructions SQL avec un nom attribué, stocké dans la base de données sous une forme compilée, de sorte qu'il puisse être partagé par plusieurs programmes.
L'utilisation d'une procédure stockée peut être utile dans
Fournir un accès contrôlé aux données (les utilisateurs finaux peuvent uniquement saisir ou modifier des données, mais ne peuvent pas écrire de procédures)
Assurer l'intégrité des données (les données seraient saisies de manière cohérente) et
Améliore la productivité (les instructions d'une procédure stockée ne doivent être écrites qu'une seule fois)
Les procédures stockées dans SQL Server peuvent accepter des paramètres d'entrée et renvoyer plusieurs valeurs de paramètres de sortie. dans SQL Server, instructions de programme de procédures stockées pour effectuer des opérations dans la base de données et renvoyer une valeur d'état à une procédure ou à un lot appelant.
Les avantages de l'utilisation de procédures stockées dans SQL Server
Ils permettent une programmation modulaire… .. Ils permettent une exécution plus rapide… >> Ils peuvent réduire le trafic réseau… .. Ils peuvent être utilisés comme mécanisme de sécurité.
Voici un exemple de procédure stockée qui prend un paramètre, exécute une requête et renvoie un résultat. Plus précisément, la procédure stockée accepte BusinessEntityID en tant que paramètre et l'utilise pour faire correspondre la clé primaire de la table HumanResources.Employee afin de renvoyer l'employé demandé.
> create procedure HumanResources.uspFindEmployee `*<<<---Store procedure name`*
@businessEntityID `<<<----parameter`
as
begin
SET NOCOUNT ON;
Select businessEntityId, <<<----select statement to return one employee row
NationalIdNumber,
LoginID,
JobTitle,
HireData,
From HumanResources.Employee
where businessEntityId =@businessEntityId <<<---parameter used as criteria
end
J'ai appris cela sur essential.com ... c'est très utile.
Dans les procédures stockées, les instructions ne sont écrites qu’une seule fois et réduisent le trafic réseau entre les clients et les serveurs .. Nous pouvons également éviter les attaques par injection SQL.
La procédure stockée vous aidera à créer du code sur le serveur. Vous pouvez passer des paramètres et rechercher une sortie.
create procedure_name (para1 int,para2 decimal)
as
select * from TableName
Une procédure stockée est une collection nommée d'instructions SQL et de logique procédurale, compilées, vérifiées et stockées dans la base de données du serveur. Une procédure stockée est généralement traitée comme les autres objets de base de données et contrôlée par le mécanisme de sécurité du serveur.