Correzione per le pagine ASP che non visualizzeranno un recordset ADO basato su una tabella #Temp

Ecco il problema: la tua pagina asp è progettata per visualizzare i dati contenuti in una tabella #temp generata da SQL. Quando si esegue la pagina, viene visualizzato un errore che indica che l'operazione non è consentita quando l'oggetto viene chiuso. Se si esegue il comando SQL in una finestra di query, tuttavia, i dati vengono visualizzati come previsto.


Cercando di eseguire una pagina ASP che viene estratta dalla tabella #temp ma ottieni un messaggio sgradevole simile a questo:
Errore ADODB.Recordset '800a0e78'
L'operazione non è consentita quando l'oggetto è chiuso.

Ciò accade perché ogni istruzione SQL all'interno della stored procedure restituisce un risultato. Si tratta di un comportamento predefinito del provider OLEDB di SQL Server (il provider ODBC di SQL Server non esegue questa operazione). Il risultato potrebbe essere un set di risultati, ma se la pagina ASP è barfing sulla visualizzazione del set di risultati, il risultato che viene restituito è un conteggio delle righe interessate.

Per impedire al provider OLEDB di SQL Server di restituire il conteggio delle righe interessate, aggiungere la seguente riga all'inizio della stored procedure:SET NOCOUNT ON

Dopo aver modificato la procedura memorizzata, la pagina ASP in questione dovrebbe visualizzare il set di risultati desiderati senza ulteriori problemi.

Nota: un altro errore che richiede il SET NOCOUNT ON la linea è:
Errore ADODB.Recordset "800a0cc1"
L'oggetto non può essere trovato nella collezione corrispondente al nome richiesto o ordinale.