在TZQuery.ParamByName上设置一列

时间:2019-05-22 13:13:08

标签: delphi zeos

我需要运行SELECT语句,其中列名是可变的,如下所示:

query.SQL.Text := 'SELECT A.:COLUMN '+
                  '  FROM A         ';

query.ParamByName('COLUMN').AsString := 'column_name';
query.Open();

但是,当我这样做时,SQL语法会出错,因为该组件的运行方式为:

SELECT A.'column_name'
  FROM A

有没有一种方法可以不使用引号设置这些参数,以便我可以动态选择列?

1 个答案:

答案 0 :(得分:0)

您可以按以下方式更改查询(创建具有所有列的子查询)。您选择的所有列都必须是同一类型:

select myData
from (
  select col1 as myData, 'col1' as colName from A
  union all
  select col2, 'col2' from A
  union all
  select colLast, 'colLast' from A
  ) as mTbl
where colName=:COLUMN