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

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
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

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
CREATE PROCEDURE [dbo].[procedure]

Ca peut très bien être

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
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

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
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

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
CREATE FUNCTION fonction
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...