0

我有疑问:

select &macro1 from table1
where &macro2

德尔福代码:

macrobyname('macro1').value := 'field1 as test,field2';
macrobyname('macro2').value := 'test=1';

我收到这样的错误:

Unknown column test in where clouse

问题2)

显示消息(sql.text);结果是“从表 1 中选择 ¯o1,其中 ¯o2”,但我希望“选择 field1 作为测试,从表 1 中选择 field2,其中 test=1”

宏替换后如何获取 sql.text。

(对不起,英语不好)。

最好的问候,努里

4

2 回答 2

1

标准 SQL 不允许在 WHERE 子句中引用列别名。施加此限制是因为在评估 WHERE 子句时,可能尚未确定列值。Сolumn 别名可用于 ORDER BY 子句,但不能用于 WHERE、GROUP BY 或 HAVING 子句。

于 2013-10-07T08:02:13.407 回答
1

您没有说您使用的是什么数据库,但我使用的那些(SQL Server 和 Sybase)不允许在 where 子句中使用字段别名。所以你不得不说:

macrobyname('macro2').value := 'field1=1';
于 2013-10-07T07:15:53.977 回答