Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;(u';24000';,u';[24000][Microsoft][ODBC SQL Server驱动程序]无效光标状态)";python中的PyODBC_Python_Sql Server_Python 2.7_Stored Procedures_Pypyodbc - Fatal编程技术网

&引用;(u';24000';,u';[24000][Microsoft][ODBC SQL Server驱动程序]无效光标状态)";python中的PyODBC

&引用;(u';24000';,u';[24000][Microsoft][ODBC SQL Server驱动程序]无效光标状态)";python中的PyODBC,python,sql-server,python-2.7,stored-procedures,pypyodbc,Python,Sql Server,Python 2.7,Stored Procedures,Pypyodbc,我想执行这个过程并获得输出参数 import pypyodbc command = "DECLARE @l_Stat INT \r\n" \ "DECLARE @s_Ms VARCHAR(200) \r\n" \ "EXEC p_Log_InsertParam_2011v1 " \ "@l_TesterId=?, " \ "@l_ObiektId=?,

我想执行这个过程并获得输出参数

import pypyodbc

command = "DECLARE @l_Stat INT \r\n" \
                  "DECLARE @s_Ms VARCHAR(200) \r\n" \
                  "EXEC p_Log_InsertParam_2011v1 " \
                  "@l_TesterId=?, " \
                  "@l_ObiektId=?, " \
                  "@l_RejPId=?, " \
                  "@s_ParamName=?, " \
                  "@f_ParamValue=?, " \
                  "@f_ParamMinValue=?, " \
                  "@f_ParamMaxValue=?, " \
                  "@b_CheckParam=?, " \
                  "@l_Status=@l_Stat output, " \
                  "@s_Msg=@s_Ms output \r\n" \
                  "SELECT @l_Stat, @s_Ms\r\n"
connection = pypyodbc.connect(self.ConnectionString)
cursor = connection.cursor()
params=(453879185, 23192812, 645872, '/APL/CTRL_GZ/PID/SP', 35.0, 0, 0, True)
# params = (testerid,
#          obiektid,
#          rejpid,
#          paramname,
#          paramvalue,
#          paramminvalue,
#          parammaxvalue,
#          checkparam) """
result = cursor.execute(command, params)
pars = result.fetchall()[0]
print pars
if pars.__len__() >= 2:
    l_status = pars[0]
    s_msg = pars[1]
print "{}: {};".format(l_status, s_msg)
它在
result=cursor.execute(command,params)
-过程正确执行这一行运行良好。 尝试在第
pars=result.fetchall()[0]
行中获取结果时出现问题:

u'24000', u'[24000] [Microsoft][ODBC SQL Server Driver]Invalid Cursor State'

如何消除此错误?

当我的
p\u Log\u InsertParam\u 2011v1
存储过程没有时,我能够重现您的问题

设置不计数;

作为它的第一个可执行语句。当我在存储过程的开头添加它时,错误消失了。

这是否与字符编码有关?U2400可能是一个很好的选择。这样的远东字符往往会在编码中产生奇怪的问题,如
UTF-8
,它们的编码需要三个字节,有时甚至四个字节。有几种工具无法解决这个问题。@Shnugo-我不这么认为。这也为我在Windows上运行修复了它。在使用FreeTDS的Linux上没有问题。在两台计算机上都使用pyodbc。