décembre
2010
Création/Modification de procédure stockées, de vue, de table à la volée …
/*==========================================================================================
Procdure Gnrique permettant la cration de procdure stocke
———————-
Exemples d'utilisation
———————–
–>Exemple 1
———–
EXEC MaBase.dbo.P_CREATE_PROC_SELECT
@ProcedureName = N'P_TEST1',
@schemaName =N'dbo',
@tableName = N'T_PARENT',
@liste_colonnes = N'idp,valp'
–>Exemple 2
———–
EXEC Optimisation.dbo.P_CREATE_PROC_SELECT
@ProcedureName = N'P_TEST2',
@schemaName =N'dbo',
@tableName = N'MaBase.dbo.T_PARENT',
@liste_colonnes = N'idp,valp',
@condition = N'idp < 10'
–>Exemple 3
———–
EXEC [P_CREATE_PROC_SELECT]
@ProcedureName = N'P_TEST3',
@baseName = N'MaBase',
@schemaName =N'dbo',
@tableName = N'T_PARENT p INNER JOIN T_FILLE f ON p.idp = f.idp',
@liste_colonnes = N'f.idp,f.valf',
@condition = N'f.idp < 10'
==========================================================================================*/
CREATE PROCEDURE P_CREATE_PROC_SELECT
@procedureName VARCHAR(50), – Nom de la procdure stocker crer
@schemaName VARCHAR (50), – Nom du schema dans lequel on veut crer la procdure
@tableName VARCHAR(max), – Nom de la ou des tables utilises pour crer la procdure
@liste_colonnes VARCHAR (max), – Liste des colonnes de la ou des tables
@condition VARCHAR (max) = NULL – Clause WHERE
AS
DECLARE @SQLUSE VARCHAR(50),@SQL VARCHAR (max)
SET NOCOUNT ON;
– Vrification des paramtres
—-Schema
IF @schemaName IS NULL
BEGIN
RAISERROR('Le nom du schma est omis. Procdure stocke P_CREATE_PROC_SELECT ', 16, 1)
RETURN;
END
IF NOT EXISTS(SELECT SCHEMA_NAME
FROM INFORMATION_SCHEMA.SCHEMATA
WHERE SCHEMA_NAME = @schemaName)
BEGIN
RAISERROR('Schema inconnu (@schemaName = %s). Procdure stocke P_CREATE_PROC_SELECT ', 16, 1, @schemaName)
RETURN;
END
—-Tables
IF @tableName IS NULL
BEGIN
RAISERROR('Le nom de la table est omis. Procdure stocke P_CREATE_PROC_SELECT ', 16, 1)
RETURN;
END
—-Colonnes
IF @liste_colonnes IS NULL
BEGIN
RAISERROR('Colonne omis. Procdure stocke P_CREATE_PROC_SELECT ', 16, 1)
RETURN;
END
IF @condition IS NULL
BEGIN
SET @SQL = 'CREATE PROCEDURE ' + @schemaName +'.'+ @ProcedureName + ' AS SELECT ' + @liste_colonnes + ' FROM ' + @tableName + ';'
EXEC (@SQL);
END
ELSE
BEGIN
SET @SQL = 'CREATE PROCEDURE ' + @schemaName +'.'+ @ProcedureName + ' AS SELECT ' + @liste_colonnes + ' FROM ' + @tableName + ' ' + ' WHERE' + ' ' + @condition + ';'
EXEC (@SQL);
END
De la même manière on peut mettre en place des :
–> procédures génériques P_CREATE_PROC_INSERT, P_CREATE_PROC_UPDATE, …
–> vues génériques V_CREATE_VUE
–> …
/*===============================================================================
Ajout dynamique de colonne une table <