我需要使用python脚本中的特定值来查询SQL Db,这是我到目前为止所拥有的:
conn = pyodbc.connect('<SQL-CREDENTIALS-HERE>')
# Create a cursor from the connection
crsr = conn.cursor()
sql = """\
DECLARE @DATA1 AS var_num;
DECLARE @DATA2 OUTPUT;
EXEC EXT_GetDATA
@DATA1,
@DATA2;
"""
crsr.execute(sql)
为此,我遇到一个错误,即DATA1是无效的数据类型,我是否正在编写sqL查询?请注意,var_num是在脚本中的较早位置拉出的,此处未显示。
编辑:我也尝试了以下方法,但仍然没有运气:
conn = pyodbc.connect('')
# Create a cursor from the connection
crsr = conn.cursor()
sql = """\
DECLARE @DATA1 CHAR(20);
SET DATA1 = var_num;
DECLARE @DATA2 NVARCHAR;
EXEC EXT_GetDATA
@DATA1,
@DATA2 OUTPUT;
"""
crsr.execute(sql)
但是这仍然不起作用并返回错误:
Exception has occurred: ProgrammingError
(Invalid column name 'var_num'. (207) (SQLExecDirectW)")
谁能告诉我我在做什么错,我不想将var_num
设置为列名?
答案 0 :(得分:1)
如pyodbc Wiki所示,类似这样的方法应该起作用:
crsr = conn.cursor()
sql = """\
DECLARE @out NVARCHAR(max);
EXEC EXT_GetDATA
@DATA1 = ?,
@DATA2 = @out OUTPUT;
SELECT @out AS output_value;
"""
crsr.execute(sql, var_num) # pass `var_num` as input parameter value
the_output = crsr.fetchval() # retrieve output parameter value