c = connection.cursor()
try:
c.execute("BEGIN")
c.callproc("fn_save_message3", (Message_Subject, Message_Content, Message_Type, Message_Category, Created_By, Updated_By))
results = c.fetchall()
c.execute("COMMIT")
finally:
c.close()
print results
Vous avez oublié les parenthèses fermantes et avez essayé d'appeler les fonctions sur cursor
au lieu de c
et avait aussi un problème avec l'indentation. Vous devez également utiliser le callproc()
fonction comme documenté ici.
Comme l'a dit catavaran, vous devriez lire la documentation sur l'exécution de SQL personnalisé et utiliser des espaces réservés. De plus, dans Django 1.6+, les transactions sont validées automatiquement, il n'y a donc pas besoin de c.execute("COMMIT")