Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Progr'amador

Function não funciona

Recommended Posts

é o seguinte:

to migrando meu banco de MySql para SQL server, e tenho uma function que converte varchar em datetime, a function é essa:

CREATE FUNCTION FN_CONVDATA(@vDATA VARCHAR(10)) RETURNS DATETIMEASBEGIN  RETURN CONVERT(DATETIME,@vDATA,103)ENDGO

isso porque todos os campos data do meu banco é do tipo VARCHAR(10) (ex: '08/05/2007') então uso essa FUNCTION para tratar como data numa select, ex:

 

SELECT * FROM TABELA

ORDER BY FN_CONVDATA(CAMPO)

---------------

 

so que a questão é a seguinte:

No MySQL funciona legal, até no Oracle funciona, só que no SQL server dá esse erro:

Msg 195, Level 15, State 10, Line 1'fn_convdata' não é um nome da função reconhecido.
ela foi criado sem erro, alguem pode da um help ae!!!

 

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Camarada,

 

Para chamar um função o dbo. é obrigatório. Então ficaria assim:

SELECT * FROM TABELAORDER BY dbo.FN_CONVDATA(CAMPO)
Agora vou ser franco! Não vejo a necessidade se criar uma função para executar esta conversão. Veja o exemplo:

SELECT * FROM TABELAORDER BY CONVERT(DATETIME,CAMPO,103)
Pq você esta criando um função para executar um CONERT que é uma função nativa e pode ser utilizada nas queries sem problemas.

 

Posso esta errado mas acho que inclusive pode impactar na performance pq você esta fazendo duas chamadas (sua função FN_CONVDATA( ) ) que chama o CONVERT, sendo que é perfeitamente possivel utilizar o CONVERT.

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Puts!!

é so isso, e eu quebrando cabeça aki

 

 

Agora vou ser franco! Não vejo a necessidade se criar uma função para executar esta conversão

tem razão, só que to migrando um banco do MySQL, então pra não ter que alterar tudo, criei essa função com o mesmo nome, se bem que vou ter que incluir esse dbo. em todas as select que usa essa função <_< . Na verdade usei como exemplo o order by, só que na verdade é usado muito mais na clausula WHERE...

 

valeu jothaz,

 

até mais!

 

Abs. Progr'amador.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Camarada,Ainda acho que é desnessário a criação da função!Porém quem pode relamente definir a melhor forma é tu msm pois conheces o ambiente e necessidades como um todo.QQ coisa estamos ai.t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.