ete*_*ent 3 sql-server stored-procedures python-3.x pypyodbc
我目前正在运行 Python 3.4.2 和 pypyodbc 1.3.6。
我正在尝试在 SQL 服务器上运行存储过程。当我在没有所需参数(日期)的情况下运行存储过程时,我收到一个错误,指出需要一个参数(这是预期的)。
当我添加这个日期时,我收到一条错误消息:
无效的游标状态。
我已验证日期格式正确,(YYYY-MM-DD)并且尝试了多种方法,但每次都遇到相同的错误。
下面是我正在使用的代码:
import pypyodbc as odbc
connection_string = "DRIVER={SQL SERVER};SERVER=SERVERNAME;DATABASE=DATABASE;Trusted_Connection=yes"
conn = odbc.connect(connection_string)
cur = conn.cursor()
cur.execute("exec stored_procedure '2017-05-01'")
report_temp = cur.fetchall()
Run Code Online (Sandbox Code Playgroud)
收到错误:
line 975, in ctrl_err raise ProgrammingError(state,err_text)
pypyodbc.ProgrammingError: ('24000', '[24000] [Microsoft][ODBC SQL Server Driver]Invalid cursor state')
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏。
确保存储过程在结果集之前没有输出任何行数或其他消息。这可能会混淆 python 驱动程序。EG 此过程失败并显示该代码的错误
create or alter procedure stored_procedure @date datetime
as
begin
--set nocount on
select * into #t from sys.objects
select * from #t
end
Run Code Online (Sandbox Code Playgroud)
但是取消注释“set nocount on”可以让它成功
create or alter procedure stored_procedure @date datetime
as
begin
set nocount on
select * into #t from sys.objects
select * from #t
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1333 次 |
| 最近记录: |