Re: [firebase-br] Diga não às UDFs!

Daniel / Tecnobyte temp em tecnobyte.com.br
Sex Out 27 20:28:23 -03 2006


Boa noite Jeferson Oliveira

> Alguns problemas no uso de UDFs, que podem ser eliminados na
> substituição por SPs:
>  - Dependência do S.O.;

O mesmo risco eu corro quando desenvolvo uma aplicação em Delphi,
bem como poderá acontecer mesmo se eu escrevê-la em C/C++ (exceto
se eu não usar nada que esteja estaticamente ligado ao SO, o que
não é muito fácil de se conseguir e ainda assim manter a produtividade).

>  - A lista de parâmetros das UDFs não é clara, precisando muitas vezes
> consultar sua documentação ou código-fonte para utilizá-la
> corretamente.

Bem, quando estou escrevendo uma aplicação em Delphi (por exemplo)
não tenho recursos como code-template, code-inside, destaque da linguagem,
etc ao escrever SQL. Afinal a maioria dos comandos SQL que escrevo
estão dentro de uma string no código-fonte da aplicação, tal como:

IBQuery.SQL.Text := 'SELECT ... FROM Tabela JOIN ... WHERE ...';

Então me restam algumas alternativas:

- lembrar da sintaxe dos comandos e funções;
- consultar a documentação;
- consultar o código-fonte.

> Enquanto SPs (em editores mais novos) exibem os nomes,
> tipo e charset dos parâmetros.

São recursos interessantes, mas nem sempre dispomos deles. Isto ocorre
principalmente quando temos que escrever SQL para resolver algum
problema usando apenas um programa como isql.exe. Importante lembrar
que para maior "compatibilidade" usuários do IB/FB deveriam se tornar
craques em "isql", pois é talvez a única ferramenta padrão em todos os
SOs suportados pelo IB/FB.

>  - A perda de uma UDF, ou a tentativa de restauração de um backup em
> uma máquina com versões diferentes do módulo que a contém, PODEM
> impedir a restauração de um backup.

Já passei por este problema, mas não posso culpar o recurso UDF por isto.
A falha foi minha e coisas deste tipo estão sujeitas de acontecer em tantos
outros casos, como por exemplo rodar a aplicação com uma versão diferente
do IB/FB daquela que foi usada no desenvolvimento.

Resumindo, eu também evito o uso de UDFs, mas não as dispenso. Tenho
aplicações inteiras sem UDFs, mas também tenho algumas que seriam
terríveis de se desenvolver sem o uso deste recurso.

É bom lembrar que a linguagem SQL usada para se escrever STORED
PROCEDURE no IB/FB é extremamente limitada de recursos. Escrever
alguns tipos de algoritmos em STORED PROCEDURE pode ser uma muito
difícil (talvez impossível!) e ainda se corre o risco do desempenho ficar
ruim
devido ao modo em que o algoritmo terá que ser escrito.

Atenciosamente.

Daniel P. Guimarães
Tecnobyte Informática
www.tecnobyte.com.br





Mais detalhes sobre a lista de discussão lista