使用PYODBC向存储过程传递一定数量的参数时出错



希望有人能帮我做以下事情:我从Python调用一个存储过程3.8.3,代码如下

def set_param_days(self, cursor, valueWW):
# valueWW = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', 
'17', '18', '19', '20', '21', '22', '23', '24', '25']
query = 'exec [dbo].[SetOUTPUT] @dInervals=%s' % (valueWW,)
cursor.execute(query)

然而,当执行此代码时,我收到以下错误:

cursor.execute(query)
pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]The identifier that starts with ''1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23',' is too long. Maximum length is 128. (103) (SQLExecDirectW)")

起初,我认为这个错误与SQL server中的存储过程有关,但在进一步测试后,我将存储过程名称完全更改为无存储过程,并收到了相同的错误,这意味着这个错误与PYODBC或python代码有关-调用从未到达SQL server-

重要:如果参数数量不超过23,代码将执行良好,没有任何问题!

query = 'exec [dbo].[SetOUTPUT] @dInervals='%s'' % ",".join(valueWW)

最新更新