Название: Firebird, создание и выполнение процедур
Отправлено: rust3128 от Апрель 19, 2018, 10:46
Доброго времени суток. Необходимо на множестве баз выполнять запросы такого вида. SET TERM ^ ; 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^ SET TERM ; ^ GRANT EXECUTE ON PROCEDURE GET_ASALDOS TO PROCEDURE TMP1C_T1; GRANT SELECT,UPDATE ON ARTICLES TO PROCEDURE TMP1C_T1; GRANT EXECUTE ON PROCEDURE TMP1C_T1 TO SYSDBA; execute procedure tmp1c_t1;
Каким образом его правильно скармливать QSqlQuery. Или формировать скрипт и скармливать isql? Буду благодарен за любые советы. Спасибо.
Название: Re: Firebird, создание и выполнение процедур
Отправлено: joker от Май 04, 2018, 08:46
Не знаю, нужен ли еще ответ, но напишу. Вобщем 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");
И так далее
Название: Re: Firebird, создание и выполнение процедур
Отправлено: rust3128 от Май 07, 2018, 11:43
Спасибо за ответ. Сейчас опробуем.
|