2017-12-22 5 views
0

dbExpress TSQLQuery를 사용하면 execute 블록 명령을 사용하여 쿼리를 실행할 수 없습니다.이 명령은 매개 변수에 대해 ? 표기법을 필요로하고,을 매개 변수로 사용하고, 해당 블록 본문에 변수를 생성하고이를Firebird의 Execute Block을 Delphi TSQLQuery와 함께 사용하려면 어떻게해야합니까?

select data from table where .... into :var; 

": var"는 TSQLQuery에 의해 매개 변수로 해석됩니다.

Delphi에서 실행 블록 문을 실행하는 방법은 무엇입니까? 내가 Query.Open 또는 Query.ExecSQL 오류가 반환 그래서 매개 변수의 부재를 나타내는 그것을 실행할 때 델파이에서 PARAM1 :하지만,

execute block(param1 char(1)=:param1) 

내가 값을로드 할 수

내가 작성하는 경우? 파이어 버드에서 실행 블록이 작성 되었기 때문에 :

execute block(param1 char(1)=?param1) 

TSQLQuery를 사용하여이를 해결할 수있는 방법이 있습니까?

+1

@MartynA이 질문은이 문제와 관련없는 것처럼 보입니다. –

+0

@MarkRotteveel : 저의 실수 - 최근 어딘가에서이 문제에 관해 쓰여진 것처럼 보였습니다. 인용 한 페이지라고 생각했지만 분명히 아닙니다. – MartynA

답변

0

"VAR는"당신은 False로 ParamCheck 속성을 설정하여 해당을 해제 할 수 있습니다 TSQLQuery

에 의해 매개 변수로 해석됩니다.

+0

ParamCheck가 false입니다. 블록 실행 (Use_Code char (1) = : Use_Code, char (2) = : plus, fromclass int = : fromclass, f1 타임 스탬프 = : f1, f2 타임 스탬프 = : f2, prov int = : prov)을 사용하는 경우 반환 (texto varchar (4096))을 으로 선언합니다. 변수 nom varchar (50); 변수 sucu 정수를 선언하십시오. begin 일부를 선택하십시오. 여기서 prov = : prov into : nom; anothertable에서 다른 클래스를 선택하십시오. class = : fromclass 및 datecolumn : f1과 : f2 into : sucu; end Query1.Open 또는 ExecSQL : 메시지 '토큰을 알 수 없음, 행 x 열 y'로 예외 클래스 TBXError를 발생시킵니다. – NizamUlMulk

+0

@ NizamUlMulk 그 종류의 정보는 코멘트가 아니라 질문에 있습니다. 질문을 수정하십시오. –

0

내게 효과가있는 유일한 방법은 블록의 내부 병에 대해 ":"을 넣는 것이 아니 었습니다. Ex. select data from table into var; 그리고 그것의 작품!, 다음,이 블록으로 평가와 함께 var!

if (var = 1) 
    do something; 
else 
    do anotherthing; 

및 해결 된 비즈니스!

관련 문제