Я пытаюсь получить идентификатор недавно вставленной строки с помощью OUTPUT. Однако я получаю исключение: fetch () при закрытом соединении или пустом наборе запросов.
Я использую adodbapi для SQL подключения к серверу.
Код:
import adodbapi
Query = '''
DECLARE @revisions_id table(revisions_id bigint);
INSERT INTO [dbo].[revisions]
([submitted_date]
,[submission_received_date]
,[form_number]
,[ProcessTryCount])
OUTPUT INSERTED.revisions_id INTO @revisions_id
VALUES
(GETDATE()
,GETDATE()
,?
,0 )
SELECT revisions_id FROM @revisions_id
'''
values = [2]
connsql = a.sql_connection()
cursor = connsql.cursor()
cursor.execute(Query, values)
revisionsID = cursor.fetchone()
connsql.commit()
cursor.close()
connsql.close()
Исключение:
File "TMSWorkflow.py", line 43, in CreateRevisions
revisionsID = cursor.fetchone()
File "C:\Users\adminuser2\AppData\Local\Programs\Python\Python35\lib\site-packages\adodbapi\adodbapi.py", line 922, in fetchone
result = self._fetch(1)
File "C:\Users\adminuser2\AppData\Local\Programs\Python\Python35\lib\site-packages\adodbapi\adodbapi.py", line 898, in _fetch
self._raiseCursorError(api.FetchFailedError, 'fetch() on closed connection or empty query set')
File "C:\Users\adminuser2\AppData\Local\Programs\Python\Python35\lib\site-packages\adodbapi\adodbapi.py", line 562, in _raiseCursorError
eh(self.connection, self, errorclass, errorvalue)
File "C:\Users\adminuser2\AppData\Local\Programs\Python\Python35\lib\site-packages\adodbapi\apibase.py", line 57, in standardErrorHandler
raise errorclass(errorvalue)
adodbapi.apibase.FetchFailedError: fetch() on closed connection or empty query set