這是我的第一個問題。所以,如果重複或格式化關閉,我很抱歉。我通過其他問題進行了搜索,錯誤很常見,但出現在多種情況下。從pyodbc調用過程時出錯
我有一個非常簡單的python代碼,我想從pyodbc在MSSQL中執行一個過程。
import pyodbc
conn = pyodbc.connect(r'DSN=myDSN')
cursor = conn.cursor()
query = r'{call myproc}'
cursor.execute(query)
我在使用call而不是exec之後,讀取ODBC使用調用來執行MSSQL中的過程。
我得到的錯誤是:
Traceback (most recent call last):
File "myscript.py", line 26, in <module>
cursor.execute(query)
pyodbc.ProgrammingError: ('42000', '[42000] [Microsoft][SQL Server Native Client 11.0][SQL Server]The current transaction has aborted, and any pending changes have been rolled back. Cause: A transaction in a rollback-only state was not explicitly rolled back before a DDL, DML or SELECT statement. (111233) (SQLExecDirectW)')
感謝您的幫助
CALL用於MySQL,而不是MSSQL。 – FlipperPA
@FlipperPA - 實際上,'{CALL ...}'語法是通過ODBC(和JDBC)調用存儲過程的標準方式,當我嘗試它時,它確實適用於我(使用pyodbc 3.0.7和SQL Server Native Client 10.0)。 –
呵呵,那年前我遇到了錯誤,但現在我想到了它,它可能是通過Perl的DBD :: ODBC。感謝Gord! – FlipperPA