Terminei o último texto com essa frase: "uma função que levou um pouco mais de uma hora para ser feita em php (e em python) levou um dia inteiro para ser feita em Transact-SQL".
Pois bem. a história não acabou por aí. Devido a umas questões de arredondamento e ponto flutuante, a função em Transact-SQL não retornava o resultado esperado. Como solução, implementamos a mesma em python (como havia sido feita desde o começo). Como estou com python 2.3 e o pymssql requer o python 2.4, o acesso ao banco foi feito por um webservice em PHP, sendo acessado pelo cliente python. Não consegui me entender com o ZSI e fazer um webservice funcionar no mod_python. Mas a implementação está funcionando.
Mas trabalhar com o Transact-SQL foi um desafio! Primeiro: uma procedure (função que não retorna nada) e uma function (função que retorna alguma coisa) são tratadas de formas diferente. Na primeira posso usar raiseerror, na segunda, não. Outros problemas:
- Não existe algo do tipo "CREATE OR REPLACE FUNCTION" - preciso apagá-la e recriá-la novamente, sempre.
- Não existe loop FOR - a única estrutura de LOOP existente é o WHILE.
- A atribuição de variáveis é feia, devido à ausência de um operador diferente para comparar e atribuir. Assim, temos:
SET @temp = '999'; // atribuição
Nem preciso dizer que durante o desenvolvimento eu esquecia de praticamente todos os SETS.
Horrível. Horrível. A sintaxe do PL/PgSQL é bem melhor. Até a do MySQL acho que é melhor.
UPDATE 05/01/2007: Parece que o Nando andou tendo seu quinhão de dor de cabeça com o SQL Server recentemente
Subscribe: 



