首页 新闻 赞助 找找看

sqlserver2008中自定义函数的问题

0
悬赏园豆:10 [已解决问题] 解决于 2012-12-25 14:37

数据库中有一个字段,数据类型为date,现在我想定义一个函数,输入参数为date类型,返回的数据为与输入参数相同年份和月份的数据行数,在函数体中使用了count函数。

create function [dbo].[Time](@times date)
returns int
as
begin 
 return(

select COUNT(*)
 from Question
 where datediff(yy,PublishedTime,@times)=0

and DATEDIFF(mm,PublishedTime,@times)=0)
end
 使用语句为:

select dbo.Time('2012-12-20')

from Question

但是为题是查出来的结果数量为表Question中数据的行数。为什么会查询出那么多行的数据,而不是单一的一行数据?

mengfeig的主页 mengfeig | 初学一级 | 园豆:179
提问于:2012-12-24 19:22
< >
分享
最佳答案
1

select dbo.Time('2012-12-20')

from Question

你这样的意思就是对Question表中的每一行都调用了那个Time函数

只要select dbo.Time('2012-12-20') 就行了啊

收获园豆:10
chenping2008 | 大侠五级 |园豆:9836 | 2012-12-25 09:25

嗯,第一次在博客园提问就得到了回答,挺高兴的的。谢谢

mengfeig | 园豆:179 (初学一级) | 2012-12-25 14:38
其他回答(1)
0

直接 “select dbo.Time('2012-12-20')” 这样应该就可以了,不需要再从question表中去查询,因为函数中已经查询过了!

流年岁月里 | 园豆:16 (初学一级) | 2012-12-24 23:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册