Probleme d'ecriture de fonction

cudenetf Messages postés 448 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 26 juillet 2012 - 7 sept. 2006 à 10:08
cs_skweeky Messages postés 259 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 janvier 2010 - 9 sept. 2006 à 20:18
bonjour,
j'essaie d'ecrire une fonction (qui sert a comparer 2 dates de 2 datetime) mais j'ai un message d'erreur
voici la fonction :

 create function meme_date(
 @date1 datetime,
 @date2 datetime
 )
 returns bit
 as
 begin
 if 
(
day(@date1)=day(@date2)
 and month(@date1)=month(@date2)
 and year(@date1)=year(@date2)
)
 

 return 1

 else

 return 0

 end
 go

mais j'ai un message d'erreur qui est le suivant:
 Msg 455, Level 16, State 2, Server T43P\SQLEXPRESS, Procedure meme_date, [...]
The last statement included within a function must be a return statement.

voila,

c ma premiere fonction ecrite en sql et je ne vois pas ce qui manque

Merci

et je sais pas comment l'uliser apres
 (la g rajouté return 1 juste vaangt le dernier end et ca a l'air de marcher (enfin d'enregistrer la function meme si je sais pas si c bon)
j'ai essayer de faire

select * from table1 where meme_date(date,'11/11/2006')
go

mais ca marche pas

meme_date n'est pas built-in function...

Comment faire?

help!!

7 réponses

cs_skweeky Messages postés 259 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 janvier 2010 8
7 sept. 2006 à 13:27
Pour lui la fonction doit se finir par un return hors du bloc IF, dans ce cas la fonction écrite comme celà :

create
function meme_date
(@date1
datetime, @date2
datetime)
returns
bit

as

begin

if
(

day

(@date1
)=day(@date2
)

and
month(@date1
)=month(@date2
)

and
year(@date1
)=year(@date2
))

      return 1

return 0

endgo

Fonctionnera à l'identique mais ne renvoie pas d'érreur comme RETURN 0 n'est plus dans le ELSE.

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration
0
cudenetf Messages postés 448 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 26 juillet 2012 2
7 sept. 2006 à 18:42
ok merci,
mais j'ai toujours le problem que je ne sais pas comment l'utiliser...
 si j'essaie de faire

select * from table1 where meme_date(date,'11/11/2006')
go

meme_date n'est pas built-in function...

c quoi l'astuce?
0
cs_skweeky Messages postés 259 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 janvier 2010 8
7 sept. 2006 à 19:07
Comme celà :

select * from table1 where dbo.meme_date(date,'11/11/2006')

Attention au nom de champ 'date' n'est pas une très bonne idée... Et attention au format de date, plutôt '20061111' que '11/11/2006'

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration
0
cudenetf Messages postés 448 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 26 juillet 2012 2
7 sept. 2006 à 21:22
ben ce coup ci il a l'air de prendre en compte la fonction par contre j'obtiens ce message d'erreur


Msg 4145, Level 15, State 1, Server T43P\SQLEXPRESS, Line 1
An expression of non-boolean type specified in a context where a condition is expected, near ')'.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
7 sept. 2006 à 22:40
Salut

N'est pas un truc du genre
select * from table1 where dbo.meme_date(date,'11/11/2006') = 1

Car le where ne c'est pas avoir quoi ce comparer.
0
cudenetf Messages postés 448 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 26 juillet 2012 2
8 sept. 2006 à 06:18
ah oui ok merci
je pensais que bit remplacait le type booleen en sql
on peut pas avoir directement de type booleen?
0
cs_skweeky Messages postés 259 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 janvier 2010 8
9 sept. 2006 à 20:18
Oui, j'avais oublié le = 1

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration
0
Rejoignez-nous