读书人

存数历程转函数

发布时间: 2012-12-14 10:33:07 作者: rapoo

存数过程转函数


@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


[其他解释]
引用:
SQL code
create function f_tempNumber
(@starttime datetime,
@endtime datetime
)
returns @tempNumber table(business_name varchar(50),business_subname varchar(50),n int)
begin
declare @tempTable tab……



表值函数啊,


估计是 吧存储过程里的 代码复制到函数, 然后 returns table 了。
[其他解释]


CREATE PROCEDURE sp_businessNumberChat
@starttime datetime,
@endtime datetime

AS


少发了一段开头
[其他解释]
好像看你发过一贴了
[其他解释]
这个函数搞不定。
[其他解释]
这个不能搞定吗?
[其他解释]
啥是函数
完全没有描述,要看代码来猜的,基本不想看
[其他解释]
楼上函数都不清楚么, 当然是 和 存储过程一样的参,换函数来展现,因为做一个东西,他不支持存储过程,支持函数。是这样的。 你不想看就不用看啊,说话注意点啊。
[其他解释]
有着方面牛人么,帮个小忙
------其他解决方案--------------------


非常感谢您的回答,我这就看看。
[其他解释]
最近有点忙了,等我看完这个例子,马上结贴。

读书人网 >SQL Server

热点推荐