Primero trato de explicar las circunstancias. Guardo la expresión del filtro en una columna separada por saltos de línea. La idea de base era la siguiente:¿Por qué no se puede usar la instrucción INSERT EXEC dentro de un procedimiento almacenado llamado por otro procedimiento almacenado?
SELECT
'SELECT ''' + REPLACE(topic_filter,CHAR(10),''' UNION ALL SELECT ''') + ''''
FROM dbo.topic_filter T
WHERE
T.id = @id
FOR XML PATH('')
Después de esto, simplemente ejecutar esta secuencia de poner los datos básicos en una tabla temporal. Mi problema comienza aquí. El fragmento está en un procedimiento almacenado y es utilizado por múltiples procedimientos almacenados para generar la fuente base que se debe llenar.
Método 1:
Llama a este SP desde otro SP para completar una tabla temporal.
Resultado 1:
No se puede anidar una instrucción INSERT EXEC. (. Si llamo simplemente con DBO ejecutivo ... estilo del código está trabajando solo me dan el error si trato de llamar dentro de un procedimiento almacenado)
Enfoque 2:
pongo el código anterior en una mesa función de valores.
Resultado 2:
Uso no válido de un operador de efectos secundarios 'INSERT EXEC' dentro de una función. (La función en sí no compilado)
Gracias,
Péter
Esto no funciona.Al menos en MS Transact SQL 2008. – Jackson