首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

存数历程转函数

2012-12-14 
存数过程转函数@endtime datetime ASdeclare @tempTabletable(businessId int,businessname varchar(50),s

存数过程转函数


@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


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


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

热点排行
Bad Request.