[firebase-br] Executar script com o FireDAC.

Gladiston Santana gladiston em vidy.com.br
Sex Maio 13 19:49:43 -03 2016


Olá PessoALL,

Eu estou usando o FireDAC agora, e tenho dificuldade com o componente dele
para executar scripts SQL. Na realidade não tenho duvida na execução, o
problema é o que ele considera sendo erro no script, ele tem coisas que eu
não entendo, por exemplo:
-- Tabela
CREATE TABLE PRODUTOS_HIST_VALORES (
    CODITEM      D_CODIGO30,
    NCM          D_NCM,
    VL_BASE     D_VALOR2,
    LAST_UPDATE  D_CURRENT_TIME,
    LAST_OWNER   D_CURRENT_USER,
    MODIFICADO_EM     COMPUTED BY (
      CAST((SUBSTRING(CAST(LAST_UPDATE as varchar(30)) FROM 1 FOR 10)||
      ' por '
      ||LAST_OWNER) as varchar(40)))
);

ALTER TABLE PRODUTOS_HIST_VALORES ADD CONSTRAINT PK_PRODUTOS_HIST_VALORES
  PRIMARY KEY (CODITEM, LAST_UPDATE);

ALTER TABLE PRODUTOS_HIST_VALORES ADD CONSTRAINT FK_PRODUTOS_HIST_VALORES
  FOREIGN KEY (CODITEM) REFERENCES PRODUTOS (CODITEM);

/*
CREATE INDEX IDX_PRODUTOS_HIST_VALORES
  ON PRODUTOS_HIST_VALORES (CODITEM,NCM);

*/


Observa as ultimas quatro linhas que estão comentadas?
Pois é, o script acima é um exemplo do que ocorre, por causa dessas 4
linhas comentadas o script via Firedac dá erro.
Se removo o comentario dessa ultima sentença, ele executa o script inteiro
de boa, e até cria o indice cuja sentença foi comentada.
Aí que está o problema, as linhas estão comentadas porque não quero sua
execução.
Já tentei usar -- para comentario e é a mesma coisa.
Mas se eu pego esse mesmo trecho comentado e movo ele para cima, antes de
qualquer outra sentença, comentada ou não, o script funciona.
Fiquei dez anos analisando para descobrir que não tem nada de errado no meu
script.
Porque o FireDAC faz isso?
Alguém tem sucesso em executar scripts de criação de objetos com o FireDAC
e poderia postar um exemplo para eu ter certeza que o erro não é meu?
Todos os demais scripts é a mesma coisa, encrenca com as linhas comentadas
que eu sempre deixo para o final.
Será que devo considerar o FDScript como algo bugado que não deve ser usado?
Como workarout tô usando o ISQL.EXE para executar meus scripts via shell do
Windows, mas é osso vendo um cmd abrindo e fechando.
Tenho o IBO, mas não vou usá-lo quando o projeto requerer Firedac, alguma
sugestão?

[]´s a todos.



Mais detalhes sobre a lista de discussão lista