未填充输出参数

时间:2016-04-20 09:56:18

标签: python sql-server stored-procedures pymssql

我有以下代码:

@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?

或者我必须完全不同吗?

2 个答案:

答案 0 :(得分:0)

我做了None

print(id_new_field.value)

但我只需索引到res元组:

即可检索该值
print(res[1])

(使用Python 2.7.11和pymssql 2.1.1测试。)

答案 1 :(得分:0)

我发现了这个错误。它坐在电脑前......

相关问题