2013-10-07 1 views
0

내가 가진 쿼리Unidac (델파이) 매크로 문제

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)

showmessage (sql.text); 결과

내가 어떻게 매크로를 교체 한 후 sql.text 얻을 수 있습니다 "테스트 = 1 표에서 검사로 필드 1 선택, FIELD2" 는하지만 기대 "& & macro2이 표에서을 Macro1을 선택"입니다.

(영어 실력 부족)

안부, 누리

답변

1

당신은 당신이 사용하고 있지만, 그 내가 사용하고 (SQL Server 및 Sybase에서) 필드 별칭이 where 절에 사용할 수 없습니다 어떤 데이터베이스 말을하지 않습니다. 따라서 다음과 같이 말하면됩니다 :

macrobyname('macro2').value := 'field1=1'; 
+0

예, 해결책을 찾았습니다. 대신 어디서 clouse를 사용해야합니까. 실제로 나는 진짜 질의에서 macro1이 "(선택 합 (filed1) table2 어디 table2.code = table1.code)로 테스트"로, BTW 내가 데 사용해야 알아. 응답 해 주셔서 감사합니다. –

1

표준 SQL은 WHERE 절에서 열 별칭에 대한 참조를 허용하지 않습니다. WHERE 절이 평가 될 때 컬럼 값이 아직 결정되지 않았기 때문에이 제한이 부과됩니다. Сolumn 별칭은 ORDER BY 절에서 사용할 수 있지만 WHERE, GROUP BY 또는 HAVING 절에서 사용할 수 없습니다.