D'abord j'essaie d'expliquer les circonstances. Je stocke l'expression de filtre dans une colonne séparée par des sauts de ligne. L'idée de base était la suivante:Pourquoi ne peut-on pas utiliser l'instruction INSERT EXEC dans une procédure stockée appelée par une autre procédure stockée?
SELECT
'SELECT ''' + REPLACE(topic_filter,CHAR(10),''' UNION ALL SELECT ''') + ''''
FROM dbo.topic_filter T
WHERE
T.id = @id
FOR XML PATH('')
Ensuite, j'exécute simplement cette chaîne pour placer les données dans une table temporaire. Mon problème commence ici. L'extrait est dans une procédure stockée et utilisé par plusieurs procédures stockées pour générer la source de base à remplir.
Approche 1:
Appelez cette variable à partir d'un autre SP pour remplir une table temporaire.
Résultat 1:
Une instruction INSERT EXEC ne peut pas être imbriquée. (. Si je l'appelle tout simplement avec exec dbo ... style le code fonctionne que je reçois l'erreur si je tente d'appeler dans une procédure stockée)
Approche 2:
Je mets le code ci-dessus dans une table fonction de valeurs.
Résultat 2:
Utilisation invalide d'un opérateur à effets latéraux 'INSERT EXEC' dans une fonction. (La fonction elle-même ne pas compilé)
Merci,
Péter
Cela ne fonctionne pas.Au moins dans MS Transact SQL 2008. – Jackson