Bonjour
Je suis en train de développer un outil interne pour gérer des procédures stockées via SVN (j'avais trouvé une solution directement intégrée à SQL Server sur un article de Sql Server Central, mais il ne me convient pas, entre autre parce qu'il ne gère que Sql Server)
Donc, je me crée une procédure en C# qui va lire l'ensemble des définitions depuis Sql Server, et qui les stocke dans des fichiers .sql, et ensuite j'essaie de gérer mes fichiers avec SVN (le projet étant tout frais de ce matin, je ne gère pas encore la partie SVN, surtout que je fais tout de tête sans specs)
Bref, pour ceux qui ne le savent pas, lorsqu'on récupère les définitions des routines dans Sql Server (ce qui comprends procédures stockées et fonctions entre autres), on obtient un code Sql qui ressemble à ça
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
-- =============================================
-- Author: mioux
-- Create date: Un jour
-- Description: Elle fais rien
-- =============================================
CREATE PROCEDURE [dbo].[nom_de_la_procedure]
--On peux mettre des commentaires ici aussi
@un_parametre INT,
@un_autre_parametre VARCHAR(50)
AS
BEGIN
SELECT @un_parametre, @un_autre_parametre
CREATE TABLE #temp ( DATA VARCHAR(50) )
DECLARE @sql NVARCHAR (4000)
SET @sql = 'CREATE PROCEDURE une_autre_procedure AS BEGIN SELECT 1 END'
END |
Mais bon, rien n'indique que la déclaration de la procédure se fait exactement comme ça
CREATE PROCEDURE [dbo].[procedure]
Ca peut très bien être
1 2 3 4 5 6 7 8
| CREATE PROCEDURE dbo
.
[une procédure à la noix] -- oui oui, avec des espaces et des accents |
ou
CREATE PROCEDURE nom_de_la_procedure
Je cherche à récupérer le nom de la procédure stockée... et intellectuellement, je ne vois pas comment faire.
Sachant que le programme ne gère pas que les procédures stockées, mais, entre autres, aussi les fonctions, qui elles sont déclarées par
avec les même règles que les procédures stockées pour le nom (donc avec une regex, on peut faire un (PROCEDURE|FUNCTION))
Si quelqu'un a une idée, parce que là je sèche...
Partager