我暂时遇到这个问题,需要你的意见。
我必须使用2个输出参数(int和varchar)处理供应商的过程调用。我选择了Python的Sybase模块,一切正常,直到我发现我找不到描述如何使用输出参数调用存储过程的文档。
Google上始终存在的主要文件是http://python-sybase.sourceforge.net/news.html。他们很快就会介绍函数调用:
通过OUTPUT()函数支持存储过程的输出参数。 OUTPUT()的参数确定将分配用于接收输出值的缓冲区的类型和大小。
c.callproc('test_proc', {'@type': 'business',
'@tot_sales': 5,
'@num_books': Sybase.OUTPUT(1)})
如果输出类型是整数,则Sybase.OUTPUT(1)工作正常,但我不知道 如何处理Varchar(和其他类型)。
对于不正确的参数类型,我总是收到错误:
DatabaseError:消息257,级别16,状态1,过程sp_caller_id_manage 不允许从数据类型“VARCHAR”到“INT”的隐式转换。使用CONVERT函数运行此查询。
有什么想法吗?
答案 0 :(得分:0)
尝试将CS_DATAFMT()的实例传递给OUTPUT而不是1(它们使用其他所有参数都传递给Sybase.py中的DBMS)。 尝试设置字段数据类型和maxlength(可能是状态)。