我有以下代码:
@Test
public void testExcelCopy1() throws FileNotFoundException, IOException {
Reader reader = new InputStreamReader(new FileInputStream("d:\\temp\\123.xls"));
Writer write = new OutputStreamWriter(new FileOutputStream("d:\\temp\\1234.xls"));
IOUtils.copy(reader, write);
write.flush();
write.close();
Assert.assertArrayEquals(FileUtils.readFileToByteArray(new File("d:\\temp\\123.xls"))
, FileUtils.readFileToByteArray(new File("d:\\temp\\1234.xls")));
}
不幸的是,我的输出参数没有填充字段的id,尽管存储过程正确执行。输出总是'无'。
我认为问题是,在我的例子中,autocommit设置为false,我是对的吗?
但我无法将autocommit设置为true,因为存储过程在事务中未执行时会引发错误(它是供应商SP而我无法更改SP)。
所以,我现在的工作量是,使用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)
代替.execute()
并将原始sql写入我的python脚本。太可怕了。 ;)
有没有机会使用.callproc()
和autocommit = false?
或者我必须完全不同吗?
答案 0 :(得分:0)
我做了None
print(id_new_field.value)
但我只需索引到res
元组:
print(res[1])
(使用Python 2.7.11和pymssql 2.1.1测试。)
答案 1 :(得分:0)
我发现了这个错误。它坐在电脑前......