Kon*_*arz 2 python t-sql pyodbc
我尝试参数化从表中获取的顶行数。
我试过了
db.cursor.execute(
'''
SELECT TOP ? VALUE FROM mytable
WHERE param = ?
''',
top_value, param
)
Run Code Online (Sandbox Code Playgroud)
它显示
pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]'@P1' 附近的语法不正确。(102) (SQLExecDirectW)")
像下面这样的字符串插值可以工作。
db.cursor.execute(
f'''
SELECT TOP {top_limit} VALUE FROM mytable
WHERE SITE_SK_FK = ?
''',
param
)
Run Code Online (Sandbox Code Playgroud)
我需要将它作为参数传递,还是字符串插值就足够了?
您可以top通过用括号将值括起来来参数化:
DECLARE @Top int = 5;
With Tally(N) AS
(
SELECT ROW_NUMBER() OVER(ORDER BY @@SPID)
FROM sys.objects
)
-- This works just fine
SELECT TOP (@Top) N
FROM Tally;
-- This will raise an error: Incorrect syntax near '@Top'
SELECT TOP @Top N
FROM Tally;
Run Code Online (Sandbox Code Playgroud)
应用于您发布的代码:
SELECT TOP (?) VALUE
FROM mytable
WHERE param = ?
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
182 次 |
| 最近记录: |