Hola,
En realidad, este es un problema de 2 partes, pero estás condenado de cualquier manera 😞
El ? se permite dentro de una cláusula superior desde un punto de vista de sintaxis si de hecho fuera a contener un número, pero internamente dentro del controlador esto intentará crear un procedimiento ligero que se envía al ASE. (create proc as select top ? col from)
Esto falla en el extremo de ASE, y se reenvía como una declaración de lenguaje con variable, pero esto luego genera el error de sintaxis ya que la variable no se puede usar en el contexto de una cláusula superior.
Se está enviando 'select top @dr_ta0 charpk' etc lo cual falla inmediatamente con un error de sintaxis en la fase de análisis.
Diría que dado que nada es legal desde el lado de ASE con respecto a esta consulta, entonces el controlador realmente debería generar un mensaje de error para evitar que lo hagas.
Para que esto funcione como lo requieres, necesita mejoras en el lado de ASE para permitir que una variable se use como n en una cláusula 'top n'.
Saludos,
Simon