存数过程转函数
@endtime datetime
AS
declare @tempTable table(businessId int,businessname varchar(50),subbusinessid int,business_subname varchar(50))
insert into @tempTable (businessid,businessname,subbusinessid,business_subname)
select b.businessid,b.business_name,sub.subbusinessid,sub.business_subname
from business_typemain b,business_type sub
where b.businessid=sub.businessid
insert into @tempTable (businessid,businessname,subbusinessid,business_subname)
select businessid,business_name,0,' '
from business_typemain
where businessid not in (select businessid from business_type)
declare business cursor for
select businessid,subBusinessid,businessname,business_subname from @tempTable
open business
declare @tempNumber table(business_name varchar(50),business_subname varchar(50),n int)
while 1 = 1
begin
declare @bid int
declare @subid int
declare @bname varchar(50)
declare @subname varchar(50)
fetch next from business into @bid,@subid,@bname,@subname
if @@fetch_status <> 0
break
insert into @tempNumber(business_name,business_subname,n)
values(@bname,@subname,0)
insert into @tempNumber(business_name,business_subname,n)
select @bname,@subname,1
from archive
where jointime <=@endtime and jointime>=@starttime and CAST(SUBSTRING(registerid, 1, 2) AS int)=@bid and CAST(SUBSTRING(registerid, 3, 2) AS int)=@subid
end
close business
deallocate business
select business_name,sum(n) as num
from @tempNumber
group by business_name
GO
如题:常规的函数我会写,这个我没有思路了。
望高人帮忙指点
[最优解释]
create function f_tempNumber
(@starttime datetime,
@endtime datetime
)
returns @tempNumber table(business_name varchar(50),business_subname varchar(50),n int)
begin
declare @tempTable table(businessId int,businessname varchar(50),subbusinessid int,business_subname varchar(50))
insert into @tempTable (businessid,businessname,subbusinessid,business_subname)
select b.businessid,b.business_name,sub.subbusinessid,sub.business_subname
from business_typemain b,business_type sub
where b.businessid=sub.businessid
insert into @tempTable (businessid,businessname,subbusinessid,business_subname)
select businessid,business_name,0,' '
from business_typemain
where businessid not in (select businessid from business_type)
declare business cursor for
select businessid,subBusinessid,businessname,business_subname from @tempTable
open business
while 1 = 1
begin
declare @bid int
declare @subid int
declare @bname varchar(50)
declare @subname varchar(50)
fetch next from business into @bid,@subid,@bname,@subname
if @@fetch_status <> 0
break
insert into @tempNumber(business_name,business_subname,n)
values(@bname,@subname,0)
insert into @tempNumber(business_name,business_subname,n)
select @bname,@subname,1
from archive
where jointime <=@endtime and jointime>=@starttime and CAST(SUBSTRING(registerid, 1, 2) AS int)=@bid and CAST(SUBSTRING(registerid, 3, 2) AS int)=@subid
end
close business
deallocate business
return
end
[其他解释]
表值函数啊,
估计是 吧存储过程里的 代码复制到函数, 然后 returns table 了。
[其他解释]
CREATE PROCEDURE sp_businessNumberChat
@starttime datetime,
@endtime datetime
AS
少发了一段开头
[其他解释]
好像看你发过一贴了
[其他解释]
这个函数搞不定。
[其他解释]
这个不能搞定吗?
[其他解释]
啥是函数
完全没有描述,要看代码来猜的,基本不想看
[其他解释]
楼上函数都不清楚么, 当然是 和 存储过程一样的参,换函数来展现,因为做一个东西,他不支持存储过程,支持函数。是这样的。 你不想看就不用看啊,说话注意点啊。
[其他解释]
有着方面牛人么,帮个小忙
------其他解决方案--------------------
非常感谢您的回答,我这就看看。
[其他解释]
最近有点忙了,等我看完这个例子,马上结贴。