Comment faire un EXEC dans une fonction
Bonjour,
Je cherche à créer une fonction basé sur un curseur lui même basé sur une requête variable. La création du curseur fonctionne trés bien par contre quand je veux l'intégrer dans une fonction j'ai le message d'erreur me disant qu'il n'est pas possible EXEC dans une fonction
Code:
1 2 3
|
Msg 443, Level 16, State 14, Procedure supp_modele_table, Line 14
Invalid use of a side-effecting operator 'EXECUTE STRING' within a function. |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
CREATE FUNCTION [dbo].[supp_modele_table](@database varchar(20), @formatTable varchar(20))
RETURNS int
AS
BEGIN
DECLARE @nb_table int
DECLARE @sql varchar(200)
SET @nb_table=0
SET @sql='SELECT name FROM ' + @database + '.[dbo].[sysobjects] WHERE xtype in (''U'',''V'') and name like ''' + @formatTable + ''''
DECLARE @nom_table varchar(255)
DECLARE @dropCommand varchar(255)
EXEC('DECLARE tableCursor CURSOR FOR ' + @sql)
OPEN tableCursor
FETCH next FROM tableCursor INTO @nom_table
IF @@fetch_status<>0
BEGIN
SET @nb_table=0
END
ELSE
BEGIN
WHILE @@fetch_status=0
BEGIN
SET @dropcommand = N'drop table ' + @database + '.[dbo].' + @nom_table
SET @nb_table= @nb_table +1
EXEC(@dropcommand)
FETCH next FROM tableCursor INTO @nom_table
END
END
CLOSE tableCursor
DEALLOCATE tableCursor
RETURN @nb_table;
END; |
Est ce qu'il existe une autre méthode que EXEC ?
D'avance merci