首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

,先行谢过!关于pyodbc访问sql server数据库执行自己创建存储过程有关问题

2012-03-22 
紧急求助,先行谢过!!关于pyodbc访问sql server数据库执行自己创建存储过程问题菜鸟请教各位大侠关于pyodbc

紧急求助,先行谢过!!关于pyodbc访问sql server数据库执行自己创建存储过程问题
菜鸟请教各位大侠关于pyodbc访问sql server数据库执行自己创建存储过程问题
使用pyodbc构建,前面连接数据库正常,执行如“select * from ...."语句都ok。
......
conn = pyodbc.connect(...省略。
cu = conn.cursor()
##this is ok.
##cu.execute("select * from sysobjects")
##print cu.fetchall() 
##this is not ok
cu.execute("sp_myproc para1,para2")
print cu.fetchall()
......

在print cu.fetchall()时打印"previous SQL is not a query"但cu.execute("select * from ...")
查询正常表是ok的。

请教各位大侠是否在sql server下pyodbc执行存储过程不是这么操作的?
还是另有其它高招,
非常感谢!!

[解决办法]
好像调用存储过程不应该是这样的吧?
我记得有个 *.callproc(operation,[parameter])方法的!!

[解决办法]
试试下面2种,para1,para2是直接面值的话就照你原来在字串里:
ms sql server format:
cu.execute("exec sp_myproc ?, ?", (cu.execute("exec sp_myproc ?, ?", (para1,para2))

odbc format:
cu.execute("{call sp_myproc (?, ?)}", (para1, para2))


[解决办法]
不是很懂,参考下面链接,好像提到有啥限制的...

Results

Since we can't use output parameters at this point, you'll need to return results in a result set. Usually this means just ending your stored procedure with a SELECT statement. 

http://code.google.com/p/pyodbc/wiki/StoredProcedures

热点排行