Parametrizing TOP value in tsql and pyodbc

前端 未结 2 993
醉话见心
醉话见心 2021-01-23 19:31

I try to parametrize number of top rows to get from table.

I tried it with

db.cursor.execute(
        \'\'\'
        SELECT TOP ? VALUE FROM mytable 
           


        
2条回答
  •  灰色年华
    2021-01-23 20:27

    You can parameterize top by surrounding the value with parenthesis:

    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;
    

    Applied to the code you've posted:

    SELECT TOP (?) VALUE 
    FROM mytable 
    WHERE param = ? 
    

提交回复
热议问题