sql-server – Python – pyodbc调用带参数名称的存储过程
发布时间:2020-12-12 16:23:19 所属栏目:MsSql教程 来源:网络整理
导读:我需要通过带有输入参数名称的pyodbc模块从python2.7调用SqlServer存储过程. 我通过输入参数顺序尝试基于documentation: cursor.execute('{CALL [SP_NAME](?,?)}',('value','value')) 它工作,但我需要传递存储过程的参数名称,因为存储过程输入参数的顺序总是
我需要通过带有输入参数名称的pyodbc模块从python2.7调用SqlServer存储过程.
我通过输入参数顺序尝试基于documentation: cursor.execute('{CALL [SP_NAME](?,?)}',('value','value')) 它工作,但我需要传递存储过程的参数名称,因为存储过程输入参数的顺序总是改变.所以我需要通过名字传递它们. cursor.execute('{CALL [SP_NAME](@param1name,@param2name)}','value')) 但是这不起作用.什么是正确的语法? 解决方法我使用SQL Server 2008 R2中的以下存储过程对此进行了测试:CREATE PROCEDURE [dbo].[breakfast] @person varchar(50) = 'nobody',@food varchar(50) = 'tofu' AS BEGIN SET NOCOUNT ON; SELECT @person + ' likes to eat ' + @food END 坏消息(“CALL”) 我找到 sql = """ { CALL breakfast (@food=?,@person=?) } """ params = ('bacon','Gord') crsr.execute(sql,params) 结果不一致. 使用{SQL Server Native Client 10.0} ODBC驱动程序,它忽略了参数名称并将参数视为位置,产生… bacon likes to eat Gord …并使用较旧的{SQL Server} ODBC驱动程序,我刚收到错误
好消息(“EXEC”) 我找到 sql = """ EXEC breakfast @food=?,@person=? """ params = ('bacon',params) 使用两个ODBC驱动程序给我以下(正确)结果 Gord likes to eat bacon (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |