OVH Cloud OVH Cloud

Création de view

1 réponse
Avatar
julian
J'aimerais savoir s'il est possible de creer une view =E0=20
partir d'une procedure stock=E9.

Cette procedure aurait en variable le sql de creation de=20
la view et le nom de la view.

merci d'avance.

julian.

1 réponse

Avatar
Fred BROUARD
Un exemple :

/**********************************************************
CRÉATION DE LA VUE DES RÉFÉRENCES (RÉFÉRENTIEL)
Cette procédure est injectée, s'exécute et se supprime
***********************************************************
F .BROUARD - GIMA - 2003-04-28
***********************************************************/

CREATE PROCEDURE SP_CREATE_VIEW_REF
AS

DECLARE @TAB_NAME VARCHAR(128)

DECLARE @QUERY VARCHAR(8000)
SET @QUERY = ''

DECLARE @TRIGRAMME CHAR(3)

DECLARE C_REFTABNAME CURSOR
FOR
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE 'TR#_%' ESCAPE '#'

OPEN C_REFTABNAME

FETCH C_REFTABNAME INTO @TAB_NAME

WHILE @@FETCH_STATUS = 0
BEGIN
SET @TAB_NAME = REVERSE(@TAB_NAME)
SET @TRIGRAMME = SUBSTRING(@TAB_NAME, 1, 3)
SET @TAB_NAME = REVERSE(@TAB_NAME)
SET @TRIGRAMME = REVERSE(@TRIGRAMME)
SET @QUERY = @QUERY + 'SELECT ''' + @TRIGRAMME+''' AS REF_TRG, '
+ @TRIGRAMME + '_ID AS REF_ID , '
+ @TRIGRAMME + '_CODE AS REF_COD, '
+ @TRIGRAMME + '_LIBELLE AS REF_LIB, '
+ @TRIGRAMME + '_BASE AS REF_BASE , '
+ @TRIGRAMME + '_ORDRE AS REF_ORD'
+ ' FROM ' + @TAB_NAME
+ ' UNION '
FETCH C_REFTABNAME INTO @TAB_NAME
END

CLOSE C_REFTABNAME
DEALLOCATE C_REFTABNAME

-- rajouter le CREATE VIEW et supprimer le dernier 'UNION'
SET @QUERY = 'CREATE VIEW V_REF AS '+SUBSTRING(@QUERY, 1, LEN(@QUERY) - 6)

EXEC (@QUERY)
GO

/**********************************************************
execution de la proc stock
**********************************************************/

SP_CREATE_VIEW_REF

GO


/**********************************************************
suppression de la proc stock
**********************************************************/

DROP PROCEDURE SP_CREATE_VIEW_REF

GO


A +

julian a écrit:
J'aimerais savoir s'il est possible de creer une view à
partir d'une procedure stocké.

Cette procedure aurait en variable le sql de creation de
la view et le nom de la view.

merci d'avance.

julian.



--
Frédéric BROUARD, MVP MS SQL Server. Expert Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************