[firebase-br] ver se transação já foi executada anteriormente

Daniel Sonda daniel em mhnet.com.br
Seg Jan 26 14:28:27 -03 2009


SQL Error:  Dynamic SQL Error SQL error code = -104 Token unknown - line 
10, column 8 end. Error Code: -104. Invalid token The SQL: EXECUTE BLOCK

O erro diz linha 10 coluna 8...
Tem mais algum comando antes do EXECUTE BLOCK?
Você poderia postar o comando inteiro?

Att.
Daniel Sonda
www.h2jsolucoes.com.br



Cássio escreveu:
> estou usando a versão 2.1
>
>
>
> Daniel Sonda escreveu:
>> Qual versão do FB vc está usando?
>>
>> Att.
>> Daniel Sonda
>> www.h2jsolucoes.com.br
>>
>>
>>
>> Cássio escreveu:
>>> este:
>>>
>>> SQL Error:  Dynamic SQL Error SQL error code = -104 Token unknown - 
>>> line 10, column 8 end. Error Code: -104. Invalid token The SQL: 
>>> EXECUTE BLOCK
>>>
>>>
>>>
>>> Daniel Sonda escreveu:
>>>> qual o erro apresentado?
>>>>
>>>> Att.
>>>> Daniel Sonda
>>>> www.h2jsolucoes.com.br
>>>>
>>>>
>>>>
>>>> Cássio escreveu:
>>>>> continua sem funcionar. Não sei o que pode ser. vlw.
>>>>>
>>>>>
>>>>> nDaniel Sonda escreveu:
>>>>>
>>>>>> Você não pode executá-lo diretamente.
>>>>>> Deve estar dentro de uma stored procedure ou usar o EXECUTE BLOCK:
>>>>>>
>>>>>> EXECUTE BLOCK
>>>>>> as
>>>>>> begin
>>>>>>  IF (EXISTS(SELECT RDB$CONSTRAINT_NAME
>>>>>>    FROM RDB$RELATION_CONSTRAINTS
>>>>>>    WHERE  (RDB$RELATION_NAME = 'Minha_Tab')
>>>>>>    AND (RDB$CONSTRAINT_NAME = 'FK_ID_') ) )  THEN
>>>>>>  begin
>>>>>>     /* seu código de atualização */
>>>>>>  end
>>>>>> end
>>>>>>
>>>>>> Att.
>>>>>> Daniel Sonda
>>>>>> www.h2jsolucoes.com.br
>>>>>>
>>>>>>
>>>>>>
>>>>>> Cássio escreveu:
>>>>>>> opa. vlw pelo retorno.
>>>>>>> Mas este código não está funcionando. Acho que é com a sintaxe. 
>>>>>>> porque se executar só o select retorna os registros..
>>>>>>>
>>>>>>> SQL Error:  Dynamic SQL Error SQL error code = -104 Token 
>>>>>>> unknown - line 1, column 1 IF. Error Code: -104. Invalid token 
>>>>>>> The SQL: IF
>>>>>>>
>>>>>>> vlw
>>>>>>>
>>>>>>> Daniel Sonda escreveu:
>>>>>>>
>>>>>>>> IF (EXISTS(
>>>>>>>> SELECT RDB$CONSTRAINT_NAME
>>>>>>>> FROM RDB$RELATION_CONSTRAINTS
>>>>>>>> WHERE  (RDB$RELATION_NAME = 'Minha_Tab')
>>>>>>>> AND (RDB$CONSTRAINT_NAME = 'FK_ID_') ) )  THEN
>>>>>>>>
>>>>>>>> Att.
>>>>>>>> Daniel Sonda
>>>>>>>> www.h2jsolucoes.com.br
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Cássio escreveu:
>>>>>>>>> vlw pelo retorno.
>>>>>>>>> como eu faço pra já no sql testar se for = 1 faz.. qual a 
>>>>>>>>> sintaxe?
>>>>>>>>>
>>>>>>>>> tipo assim, exemplo:
>>>>>>>>>
>>>>>>>>> IF (
>>>>>>>>> SELECT COUNT(*) as num
>>>>>>>>> FROM RDB$RELATION_CONSTRAINTS
>>>>>>>>> WHERE  (RDB$RELATION_NAME = 'Minha_Tab')
>>>>>>>>> AND (RDB$CONSTRAINT_NAME = 'FK_ID_') = 0 ) THEN
>>>>>>>>>
>>>>>>>>>      faz um insert;
>>>>>>>>>
>>>>>>>>> como fica para o fb?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Escovador de Bits escreveu:
>>>>>>>>>> Bom dia/tarde Cássio.
>>>>>>>>>>
>>>>>>>>>> Amigo, você deve consultar as tabelas de sistema do Firebird, 
>>>>>>>>>> ou seja, as tabelas que iniciam com "RDB$", como a 
>>>>>>>>>> RDB$RELATIONS, etc...
>>>>>>>>>>
>>>>>>>>>> Pode pesquisar na internet que existe muito material sobre o 
>>>>>>>>>> assunto, mas vamos aos 3 casos que você informou aqui e mais 
>>>>>>>>>> alguns.
>>>>>>>>>>
>>>>>>>>>> 1 - Para saber se uma determinada tabela já está criada, 
>>>>>>>>>> execute o seguinte SELECT:
>>>>>>>>>>
>>>>>>>>>> SELECT COUNT(*) FROM RDB$RELATIONS WHERE RDB$RELATION_NAME = 
>>>>>>>>>> 'Nome-da-tabela'
>>>>>>>>>>
>>>>>>>>>> Se retornar 0, ainda não foi criada, caso contrário (1), ela 
>>>>>>>>>> já está criada.
>>>>>>>>>>
>>>>>>>>>> 2 - Para saber se um determinado campo já foi criado em uma 
>>>>>>>>>> tabela, execute o seguinte SELECT:
>>>>>>>>>>
>>>>>>>>>> SELECT COUNT(*) FROM RDB$RELATION_FIELDS 
>>>>>>>>>> WHERE(RDB$RELATION_NAME = 'Nome-da-tabela')AND(RDB$FIELD_NAME 
>>>>>>>>>> = 'Nome-do-campo')
>>>>>>>>>>
>>>>>>>>>> O resultado deve ser interpretado como no item anterior (0 = 
>>>>>>>>>> Ainda não foi criado, 1 = Já foi criado).
>>>>>>>>>>
>>>>>>>>>> 3 - Para saber se uma determinada regra (constraint) já foi 
>>>>>>>>>> criada, execute o seguinte SELECT:
>>>>>>>>>>
>>>>>>>>>> SELECT COUNT(*) FROM RBD$RELATION_CONSTRAINTS 
>>>>>>>>>> WHERE(RDB$RELATION_NAME = 
>>>>>>>>>> 'Nome-da-tabela')AND(RDB$CONSTRAINT_NAME = 'Nome-da-regra')
>>>>>>>>>>
>>>>>>>>>> O resultado deve ser interpretado como no item anterior (0 = 
>>>>>>>>>> Ainda não foi criado, 1 = Já foi criado).
>>>>>>>>>>
>>>>>>>>>> 4 - No seu caso de verificar se um campo foi renomeado, 
>>>>>>>>>> bastará verificar se existe um campo, na mesma tabela, com o 
>>>>>>>>>> novo nome, o que significará que o campo já teria sido 
>>>>>>>>>> renomeado, usando a consulta do item 2.
>>>>>>>>>>
>>>>>>>>>> Cada banco de dados contém tabelas de sistemas justamente 
>>>>>>>>>> para que possamos, via programação, acessar e verificar todos 
>>>>>>>>>> os objetos de banco (tabelas, campos, stored procedures, 
>>>>>>>>>> triggers, etc...), e no caso do Firebird não seria diferente.
>>>>>>>>>>
>>>>>>>>>> O que coloquei aqui foi só a ponta do iceberg, e tem muito 
>>>>>>>>>> material sobre essas tabelas de sistema do Firebird na internet.
>>>>>>>>>>
>>>>>>>>>> Espero ter te ajudado mais que atrapalhado.
>>>>>>>>>>
>>>>>>>>>> Cássio escreveu:
>>>>>>>>>>> --adiciona um campo
>>>>>>>>>>> ALTER TABLE Minha_tab
>>>>>>>>>>>   ADD Novo_Campo VARCHAR(100);
>>>>>>>>>>>
>>>>>>>>>>> --delete um relacionamento
>>>>>>>>>>> ALTER TABLE Minha_tab
>>>>>>>>>>>   DROP CONSTRAINT FK_ID_REL;
>>>>>>>>>>>
>>>>>>>>>>> --ALTERA NOME DA COLUNA
>>>>>>>>>>> ALTER TABLE minha_Tab
>>>>>>>>>>>   ALTER COLUMN Nome1 TO Nome_123;
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> gostaria que antes de exeuctar isso verificasse se isso já 
>>>>>>>>>>> foi executado anteriormente... como faço isso no fb?
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> vlw.
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> ______________________________________________
>>>>>>>>>>> FireBase-BR (www.firebase.com.br) - Hospedado em 
>>>>>>>>>>> www.locador.com.br
>>>>>>>>>>> Para saber como gerenciar/excluir seu cadastro na lista, 
>>>>>>>>>>> use: http://www.firebase.com.br/fb/artigo.php?id=1107
>>>>>>>>>>> Para consultar mensagens antigas: 
>>>>>>>>>>> http://firebase.com.br/pesquisa
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> ______________________________________________
>>>>>>>>>> FireBase-BR (www.firebase.com.br) - Hospedado em 
>>>>>>>>>> www.locador.com.br
>>>>>>>>>> Para saber como gerenciar/excluir seu cadastro na lista, use: 
>>>>>>>>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>>>>>>>>> Para consultar mensagens antigas: 
>>>>>>>>>> http://firebase.com.br/pesquisa
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ______________________________________________
>>>>>>>>> FireBase-BR (www.firebase.com.br) - Hospedado em 
>>>>>>>>> www.locador.com.br
>>>>>>>>> Para saber como gerenciar/excluir seu cadastro na lista, use: 
>>>>>>>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>>>>>>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>>>>>>>
>>>>>>>>> __________ Información de ESET Smart Security, versión de la 
>>>>>>>>> base de firmas de virus 3792 (20090123) __________
>>>>>>>>>
>>>>>>>>> ESET Smart Security ha comprobado este mensaje.
>>>>>>>>>
>>>>>>>>> http://www.eset.com
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> ______________________________________________
>>>>>>>> FireBase-BR (www.firebase.com.br) - Hospedado em 
>>>>>>>> www.locador.com.br
>>>>>>>> Para saber como gerenciar/excluir seu cadastro na lista, use: 
>>>>>>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>>>>>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> ______________________________________________
>>>>>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>>>>>> Para saber como gerenciar/excluir seu cadastro na lista, use: 
>>>>>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>>>>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>>>>>
>>>>>>> __________ Información de ESET Smart Security, versión de la 
>>>>>>> base de firmas de virus 3795 (20090123) __________
>>>>>>>
>>>>>>> ESET Smart Security ha comprobado este mensaje.
>>>>>>>
>>>>>>> http://www.eset.com
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> ______________________________________________
>>>>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>>>>> Para saber como gerenciar/excluir seu cadastro na lista, use: 
>>>>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>>>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>>>>
>>>>>
>>>>>
>>>>> ______________________________________________
>>>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>>>> Para saber como gerenciar/excluir seu cadastro na lista, use: 
>>>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>>>
>>>>> __________ Información de ESET Smart Security, versión de la base 
>>>>> de firmas de virus 3795 (20090123) __________
>>>>>
>>>>> ESET Smart Security ha comprobado este mensaje.
>>>>>
>>>>> http://www.eset.com
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>> ______________________________________________
>>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>>> Para saber como gerenciar/excluir seu cadastro na lista, use: 
>>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>>
>>>
>>>
>>> ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use: 
>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>
>>> __________ Información de ESET Smart Security, versión de la base de 
>>> firmas de virus 3795 (20090123) __________
>>>
>>> ESET Smart Security ha comprobado este mensaje.
>>>
>>> http://www.eset.com
>>>
>>>
>>>
>>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use: 
>> http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: 
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
> __________ Información de ESET Smart Security, versión de la base de 
> firmas de virus 3795 (20090123) __________
>
> ESET Smart Security ha comprobado este mensaje.
>
> http://www.eset.com
>
>
>
>




Mais detalhes sobre a lista de discussão lista