Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

operacja niedozwolona, ​​gdy obiekt jest zamknięty podczas uruchamiania bardziej zaawansowanego zapytania

Jest to powszechny problem spowodowany interpretacją liczby wierszy jako danych wyjściowych procedury przechowywanej podczas korzystania z ADODB z serwerem SQL.

Aby tego uniknąć pamiętaj o ustawieniu

SET NOCOUNT ON;

w procedurze składowanej spowoduje to zatrzymanie przez ADODB zwracania zamkniętego zestawu rekordów lub jeśli z jakiegoś powodu nie chcesz tego robić (nie wiesz, dlaczego, ponieważ zawsze możesz użyć @@ROWCOUNT aby cofnąć licznik rzędów), możesz użyć

'Return the next recordset, which will be the result of the Stored Procedure, not 
'the row count generated when SET NOCOUNT OFF (default).
Set rs = rs.NextRecordset()

który zwraca następny ADODB.Recordset jeśli ADODB wykrył, że jest on zwracany przez procedurę składowaną (najlepiej jest sprawdzić rs.State <> adStateClosed gdy mamy do czynienia z wieloma obiektami ADODB.Recordset).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak możesz reprezentować dziedziczenie w bazie danych?

  2. Odroczone ograniczenia w SQL Server

  3. 3 sposoby na uzyskanie nazwy miesiąca z daty w SQL Server (T-SQL)

  4. Jak wyświetlić historię zapytań w SQL Server Management Studio

  5. Jak przekonwertować wielkie litery na małe w programie SQL Server — LOWER()