Innanzitutto cerco di spiegare le circostanze. Memorizzo l'espressione filtro in una colonna separata da interruzioni di riga. L'idea di base era questa:Perché non è possibile utilizzare l'istruzione INSERT EXEC all'interno di una stored procedure richiamata da un'altra stored procedure?
SELECT
'SELECT ''' + REPLACE(topic_filter,CHAR(10),''' UNION ALL SELECT ''') + ''''
FROM dbo.topic_filter T
WHERE
T.id = @id
FOR XML PATH('')
Dopo questo, eseguo semplicemente questa stringa per inserire i dati in una tabella temporanea. Il mio problema inizia qui. Lo snippet si trova in una stored procedure e viene utilizzato da più stored procedure per generare l'origine di base da riempire.
Approccio 1:
Chiamare questa sp da un altro SP per riempire una tabella temporanea.
Risultato 1:
Un'istruzione INSERT EXEC non può essere nidificata. (. Se chiamo semplicemente con dbo exec ... stile il codice sta lavorando ho solo l'errore se provo a chiamare all'interno di una stored procedure)
Approccio 2:
ho messo il codice di cui sopra in una tabella funzione valori.
Risultato 2:
Uso non valido di un operatore di effetti collaterali "INSERT EXEC" all'interno di una funzione. (La funzione stessa non compilato)
Grazie,
Péter
Questo non funziona.Almeno in MS Transact SQL 2008. – Jackson