usar quot;SET TERM ^quot;

17/12/2004

0

desculpem-me pela ignorancia, mas não estou conseguindo fazer. Quero montar um script para o firebird 1.5 e estou tentando usar delimitador de bloco como no interbase e não esta dando certo. O script é:

set term ^
grant all on imoveis to paganato with grant option;
grant all on imovel_tipo to paganato with grant option;
set term; ^

não esta funcionando no firebird, é assim mesmo ou é diferente.


Paganato

Paganato

Responder

Posts

17/12/2004

Tinorj

Neste trecho de script você não precisa trocar o terminador de linha [b:4291f2b484]set term ^[/b:4291f2b484].

Você só deve trocar o terminador, quando for escrever, por exemplo, a criação de uma procedure/função/trigger/e outros similares.

...
SET TERM ^ ;

CREATE TRIGGER TABELA1_BI FOR TABELA1
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.REGISTRO IS NULL) THEN
    NEW.REGISTRO = GEN_ID(GEN_TABELA1_ID,1);
END
^

CREATE TRIGGER TABELA2_BI FOR TABELA2
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.REGISTRO IS NULL) THEN
    NEW.REGISTRO = GEN_ID(GEN_TABELA2_ID,1);
END
^

SET TERM ; ^...


Tentando explicar o script acima:
[b:4291f2b484]SET TERM ^ ;[/b:4291f2b484] :arrow: é indicado para o interpretador dfe scripts que o terminador de comandos agora será o sinal de ´^´ (acento circunflexo);


[b:4291f2b484]^[/b:4291f2b484] :arrow: Final de Bloco

[b:4291f2b484]SET TERM ; ^[/b:4291f2b484] :arrow: é indicado para o interpretador dfe scripts que o terminador de comandos voltará a ser o sinal de ´;´ (ponto e virgula);


Mas por que trocar o terminador de comando?
- O terminador padrão do Interbase/Firebird e o sinal de ´;´ (ponto e virgula) e como dentro de uma procedure, trigger e outros, teremos que colocar vários sinais de ´;´, então para que o interpretador de scripts entenda que eu não vamos terminar o comando no primeiro ´;´ que aparecer, trocamos o terminador para o sinal de ´^´ e então desenvolvemos os processos.

Espero ter explicado, mas não esclarecido, pois ficou muito ofusco.


Responder

17/12/2004

Vinicius2k

Colega,

As mudanças de terminador só são utilização na criação de SPs ou Triggers, e servem para indicar quando a SP ou a Trigger termina...
O terminador continua sendo ´;´ para as instruções, mesmo dentro de SPs e Triggers...

Vc está tentando executar estas instruções de que forma ?
Observe que queries só podem executar uma instrução de cada vez, então, vc não pode ter estes dois GRANTs na mesma execução... e também não deve existir a mudança de terminador.

Para executar scripts com várias instruções vc deve utilizar componentes específicos para isso, como o IBScript da paleta IBX. Estes componentes possuem um interpretador interno de scripts que executa as instruções uma a uma...

T+


Responder

17/12/2004

Paganato

Eu entendi perfeitamente sua esplicação, porem o script q passei, mesmo tirando o set term ^, ele esta dando erro, não executando o script.
Ele para na primeira letra da próxima linha, apos o ´;´.

vc sabe oq pode ser ?


Responder

17/12/2004

Gandalf.nho

Os nomes da tabela/view e do usuário/role estão corretas?


Responder

17/12/2004

Paganato

Carrissímos colegas, eu estou executando estes comandos do IbExpert.


Responder

17/12/2004

Gandalf.nho

Qual a mensagem de erro que aparece?


Responder

17/12/2004

Vinicius2k

Carrissímos colegas, eu estou executando estes comandos do [color=red:82651b943a][b:82651b943a]IbExpert[/b:82651b943a][/color:82651b943a].

Então vc *deve* estar tentando executá-los via SQL Editor, que é o mesmo que uma query... use a ferramenta Script Executive (menu Tools)...


Responder

17/12/2004

Martins

[quote:e9b566b22b=´paganato´]Carrissímos colegas, eu estou executando estes comandos do [color=red:e9b566b22b][b:e9b566b22b]IbExpert[/b:e9b566b22b][/color:e9b566b22b].

Então vc *deve* estar tentando executá-los via SQL Editor, que é o mesmo que uma query... use a ferramenta Script Executive (menu Tools)...[/quote:e9b566b22b]
verdade, a dica do [b:e9b566b22b]Vini[/b:e9b566b22b] é quente, não tente executar esse tipo de script lá pelo [b:e9b566b22b]Editor SQL[/b:e9b566b22b], mas sim pelo [b:e9b566b22b]Script Executive[/b:e9b566b22b].

Boa sorte pra vc!


Responder

20/12/2004

Paganato

Obrigado a todos, o Vinicius acertou em cheio o q eu estava fazendo de errado.


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar