Réponses:
Les procédures stockées sont un lot d'instructions SQL qui peuvent être exécutées de plusieurs manières. La plupart des DBM principaux prennent en charge les procédures stockées; cependant, tous ne le font pas. Vous devrez vérifier avec votre documentation d'aide SGBD particulière pour les détails. Comme je connais très bien SQL Server, je vais l'utiliser comme exemple.
Pour créer une procédure stockée, la syntaxe est assez simple:
CREATE PROCEDURE <owner>.<procedure name>
<Param> <datatype>
AS
<Body>
Ainsi, 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 en un seul endroit qui est ensuite facile à optimiser pour les DBA. Les procédures stockées présentent également un avantage en termes de sécurité dans la mesure où vous pouvez accorder des droits d'exécution à une procédure stockée, mais l'utilisateur n'aura pas besoin d'avoir des 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 CRUD de base . Disons 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. Prenez maintenant une base de données de taille décente de 400 tables, et vous avez 1600 procédures! Et cela suppose que vous n'avez pas de doublons, ce que vous aurez 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 qui sont utilisées pour effectuer une tâche spéciale.
Exemple: si j'ai une Employee
table
Employee ID Name Age Mobile
---------------------------------------
001 Sidheswar 25 9938885469
002 Pritish 32 9178542436
Je récupère d'abord le Employee
tableau:
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 le Employee
tableau, la Name
taille de la colonne doit être varchar(30)
.
Une procédure stockée est un groupe d'instructions SQL qui a été créé et stocké dans la base de données. Une procédure stockée acceptera des paramètres d'entrée afin qu'une seule procédure puisse être utilisée sur le réseau par plusieurs clients utilisant différentes données d'entrée. 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 vous le souhaitez 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 qui est effectuée de manière répétitive, les procédures stockées peuvent être plus rapides. Ils sont analysés et optimisés lors de leur première exécution, et une version compilée de la procédure stockée reste dans un cache mémoire pour une utilisation ultérieure. Cela signifie que la procédure stockée n'a pas besoin d'être analysé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 être autorisés à 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 le système sont stockées dans la base de données master et commencent par un sp_
préfixe. Ces procédures peuvent être utilisées pour effectuer une variété de tâches pour 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 stockées définies par l'utilisateur sont généralement stockées dans une base de données utilisateur et sont généralement conçues pour effectuer les tâches dans la base de données utilisateur. Bien que le codage de ces procédures n'utilise pas le sp_
préfixe, car si nous utilisons d'abord le sp_
préfixe, il vérifiera la base de données principale, puis il arrivera à 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, car 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
Il s'agit d'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 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
Supprimez ou supprimez une procédure stockée:
DROP PROCEDURE GetEmployee
Une procédure stockée est utilisée pour récupérer des données, modifier des données et supprimer des données dans la table de base de données. Vous n'avez pas besoin d'écrire une commande SQL entière 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 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 seule en utilisant 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 articles ici. Ce que je publierai est une façon moins connue d'utiliser la procédure stockée. C'estgrouping stored procedures
ou numbering stored procedures
.
Référence de syntaxe
; number
selon cela
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 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, état 1, procédure SecondTest, ligne 1 [ligne de démarrage par lots 3] Impossible de créer la procédure 'SecondTest' avec un numéro de groupe 2 car une procédure portant le même nom et un numéro de groupe 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
Une procédure stockée est une collection nommée d'instructions SQL et de logique procédurale, c'est-à-dire compilée, vérifiée et stockée 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 via le mécanisme de sécurité du serveur.
Dans un SGBD, une procédure stockée est un ensemble d'instructions SQL avec un nom attribué qui est stocké dans la base de données sous forme compilée afin qu'il puisse être partagé par un certain nombre de programmes.
L'utilisation d'une procédure stockée peut être utile pour
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)
pour simple,
Les procédures stockées sont des programmes stockés , un programme / fonction stocké dans la base de données.
Chaque programme stocké contient un corps qui se compose d'une instruction SQL. Cette instruction peut être une instruction composée 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;
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, des 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 le BusinessEntityID en tant que paramètre et l'utilise pour faire correspondre la clé primaire de la table HumanResources.Employee pour 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 de 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.
ORM
aimezEntity Framework
faire desCRUD
opérations?