Не знаю, нужен ли еще ответ, но напишу.
Вобщем QSqlQuery прекрасно кушает ISQL, только скармливать надо по одной команде, хотя сможет ли правильно правильно отработать SET TERM не знаю.
ИЗМЕНЕНО
Попробуй как то так
QSqlQuery.execute("create or alter procedure TMP1C_T1
as
declare variable ARTICLE_ID integer;
declare variable TERMINAL_ID smallint = 2142;
begin
FOR select A.article_id from get_asaldos (:TERMINAL_ID, 9999, null, 0) GA
join articles A on A.article_id = GA.article_id and A.terminal_id = :TERMINAL_ID
where A.isactive = 'F'
INTO :ARTICLE_ID
DO
update articles AR set AR.isactive = 'T'
where AR.terminal_id = :TERMINAL_ID and AR.article_id = :ARTICLE_ID;
end");
QSqlQuery.execute("GRANT EXECUTE ON PROCEDURE GET_ASALDOS TO PROCEDURE TMP1C_T1");
QSqlQuery.execute("GRANT SELECT,UPDATE ON ARTICLES TO PROCEDURE TMP1C_T1");
QSqlQuery.execute("GRANT EXECUTE ON PROCEDURE TMP1C_T1 TO SYSDBA");
QSqlQuery.execute("execute procedure tmp1c_t1");
И так далее