Set term no es un comando SQL válido.
Cuando usas isql, este interpreta el comando para saber donde termina la instrucción SQL. En el caso de los triggers o stored procedures, esto es necesario, pues de otra manera el interprete detectaría que la instrucción termina en el primer punto y coma y enviaría solamente ese trozo al servidor, que tiene capacidad
únicamente para procesar comandos uno a uno.
En otras palabras, un servidor Firebird no ejecutará un script. Es el interprete (isql, por ejemplo) el encargado de ir sacando las instrucciones y enviarlas una a una al servidor.
La gran mayoría de las herramientas para ib/fb que han surgido posteriormente (IBConsole, IBExpert, IBManager, etc), han tomado este comportamiento como "estándar" y lo han implementado.
Después de toda esta explicación, comprenderás que si estas enviando la instrucción con un TQUery, lo único que falta es que quites las dos sentencias set term del mismo, y todo funcionará a la perfección.
Hasta luego.