我有以下代碼:輸出參數不填充
conn = pymssql.connect(server, user, password, database)
cursor = conn.cursor()
id_new_field = pymssql.output(int)
res = cursor.callproc('NewField', ('Test',id_new_field))
conn.commit()
conn.close()
print(id_new_field.value)
print(res)
不幸的是我的輸出參數不填充該字段的id,雖然存儲的過程正確執行。輸出總是'無'。
我認爲問題是,在我的例子中autocommit ist設置爲false,我是對嗎?
但是,因爲當一個事務(這是一個供應商的SP,我不能改變SP)內不執行它的存儲過程引發錯誤我無法設置自動提交爲true。
因此,我現在的工作是使用.execute()
而不是.callproc()
並將原始sql寫入我的python腳本。這太可怕了。 ;)
是否有機會使用.callproc()
自動提交=假?
或者我必須做到完全不同嗎?
不適合我。我正在使用Python 3.5.1和pymssql 2.1.2。準確地說:它只工作一次。我也用'print(res)'試了一下。我第一次得到新字段的ID,但是當我第二次運行腳本時,結果是「無」。 – st4rbuck
您正在運行的存儲過程必須有一些特別的東西。一般問題的答案*「是否有機會使用.callproc()和autocommit = false?」*是「是」。您沒有向我們展示您用作解決方法的SQL代碼,因此我們無法知道您的Python代碼可以做些什麼來獲得相同的結果。 –
@ stefan2342xx - 僅供參考,它也適用於Python 3.5.1和pymssql 2.1.2,即使我在同一個腳本中兩次調用了SP,但兩者之間沒有'.commit()'。無論你的問題是什麼,它看起來不像自動提交是罪魁禍首。 –