2010-01-08 14 views
0

Lorsque vous tentez de créer des fonctions définies par l'utilisateur sur sybase 15+, vous pouvez obtenir l'erreur suivante: "construction illégale" dans l'instruction de fonction dans la fonction SQL scalaire " Ceci est b/c" non déterministe "fonctions telles que getdate(), rand(), newid() ne sont pas autorisés dans les fonctions définies par l'utilisateur.Fonction définie par l'utilisateur sybase - erreur "non déterministe" ou "fonction intégrée illégale"

Y a-t-il un moyen de contourner cette limitation?

Notez que je prévois de répondre à ma propre question ici.

Répondre

1

La solution est de créer une vue telle que:

create view vGetDate as select getdate() as gtdt 

Ensuite, dans l'UDF de sélectionner ce point de vue:

create function udf_getdate 
returns datetime 
as 
declare @gd datetime 
select @gd=gtdt from vGetDate 
return @gd 
go 

appellent maintenant la fonction:

select dbo.udf_getdate()