好贷网好贷款

SOS急啊.高手请进. 20CSDN]

发布时间:2016-12-5 6:29:35 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"SOS急啊.高手请进. 20CSDN]",主要涉及到SOS急啊.高手请进. 20CSDN]方面的内容,对于SOS急啊.高手请进. 20CSDN]感兴趣的同学可以参考一下。

现在遇到这样的问题:我原来使用的是。SQL Server2000现在换了一个数据库。SQL Server2005。 结果所有的存储过程都不能用了。 出错提示为:“不允许对具有不止一条 SELECT 语句的远程存储过程或存储过程使用服务器游标。请使用默认结果集或客户端游标。” 各位大姐.大哥有什么解决的方法没有啊.

贴一下你RPC的代码

SET QUOTED_IDENTIFIER ON  GO SET ANSI_NULLS ON  GO --Crm_TrimSalePlan_ciareanameb 2006,4,2006,5,2006,6,2006,7,1,1,1,1,1 CREATE             proc Crm_TrimSalePlan_ciareanameb                       @iyear int,                         @imonth int,                         @cyear int,                         @cmonth int,                         @cnyear int,                         @cnmonth int,                         @cnnyear int,                         @cnnmonth int,                          @isseries int,--是否选定中心                           @isrefrig int,--是否选定客户                           @ispower int,--是否选定系列                          @iskind int,--是否选定电源                          @isdrawid int--是否选定机型                          as             declare @strmonth varchar(2),@stryear varchar(5)           set @stryear=convert(char(4),@iyear)           if(@imonth<10)             set @strmonth='0'+convert(char(1),@imonth)           else             begin             set @strmonth=convert(char(2),@imonth)             end                    begin                                                  ---原来                              SELECT drawid,custname tshortname,areaname, sum(case when [email protected] then aqty else 0 end) as cqty,   sum(case when [email protected] then aqty else 0 end) as cnqty, sum(case when [email protected] then aqty else 0 end) as cnnqty                          into #aa FROM CrmTrimSalePlan WHERE [email protected] and [email protected] and                             yrevid=(SELECT MAX(yrevid) from CrmTrimSalePlan WHERE [email protected] and [email protected])                                                       group by drawid,areaname,custname                                                                                                           ---年度  SELECT  drawid,tshortname,areacode,sum(veriqty) as iqty  into #bb                 from  crmshipplan,crmitem,crmcust  where  revid=          (SELECT max(revid) from crmshipplan WHERE shipdate like @[email protected]+'%')           and  shipdate like  @[email protected]+'%'             and  crmshipplan.itemid=crmitem.itemid          and   crmshipplan.custid=crmcust.custid   group by drawid,tshortname,areacode   select isnull(#aa.drawid,#bb.drawid) as drawid,        isnull(#aa.areaname,#bb.areacode) as areaname,        isnull(#aa.tshortname,#bb.tshortname) as tshortname,        isnull(cqty,0)/10000.0  as cqty,        isnull(cnqty,0)/10000.0  as cnqty,        isnull(cnnqty,0)/10000.0  as cnnqty,        isnull(iqty,0)/10000.0  as iqty into #cc  from #aa      full join #bb on #aa.drawid=#bb.drawid AND #aa.areaname=#bb.areacode and #aa.tshortname=#bb.tshortname select   #cc.areaname as direct,tshortname as series,refrkind as refrig,                             series as [power],  powerspec kind, kind drawid,cqty,cnqty,cnnqty,iqty into #dd from #cc,qrycrmitem WHERE #cc.drawid=qrycrmitem.drawid  select  isnull(a.sortcode,'')+'-'+direct as directs,        isnull(b.sortcode,'')+'-'+series as seriess,refrig, [power],kind,drawid, cqty,cnqty,cnnqty,iqty into #tt from #dd  left join crmbaseareasort a on areaname=direct left join crmbasecustsort b on shortname=series ----------获得华南sortcode  declare @sortcode varchar(10)  select @sortcode=sortcode from crmbaseareasort where areaname='华南' declare @sql varchar(8000),@temp varchar(500),@i int,@lastname varchar(20), @x int,@str varchar(5000), @strwhere varchar(1000), @strorder varchar(500),         @hwhere varchar(500), @hhwhere varchar(100) set @sql='' set @temp='directs' set @hwhere='a.itype,subString(a.directs,charindex(''-'',a.directs)+1,len(a.directs)) as direct' set @i=0 set @x=1 set @lastname='directs' set @str='' set @strorder='case when a.directs=''小计'' then ''最最'' else a.directs end' set @[email protected]+'-华南总计'''  if @isseries=2     begin set @[email protected]+',seriess' set @[email protected]+1 set @lastname='seriess' set @[email protected]+',case when a.seriess=''小计'' then ''最最'' else a.seriess end' set @[email protected]+',subString(a.seriess,charindex(''-'',a.seriess)+1,len(a.seriess)) as series' set @[email protected]+',null'     end  if  @isrefrig=2    begin set @[email protected]+',refrig' set @[email protected]+1 set @lastname='refrig' set @[email protected]+',a.refrig' set @[email protected]+',a.refrig' set @[email protected]+',null'    end  if @ispower=2    begin set @[email protected]+',[power]' set @[email protected]+1 set @lastname='[power]'    set @[email protected]+',a.[power]' set @[email protected]+',a.[power]'  set @hhwhere= @hhwhere+',null'    end  if @iskind=2   begin set @[email protected]+',kind' set @[email protected]+1 set @lastname='kind'  set @[email protected]+',a.kind' set @[email protected]+',a.kind' set @hhwhere= @hhwhere+',null'    end  if @isdrawid=2   begin set @[email protected]+',drawid' set @[email protected]+1 set @lastname='drawid' set @[email protected]+',a.drawid' set @[email protected]+',a.drawid' set @hhwhere= @hhwhere+',null'    end set @[email protected]+',iqty,cqty,crate,cnqty,cnrate,cnnqty,cnnrate'        set @sql=' select grouping([email protected]+') as itype,[email protected] +',sum(iqty) iqty,sum(cqty) as cqty,' +'case when sum(iqty)=0 then 0 else sum(cqty)*100.0/sum(iqty) end as crate,' +'sum(cnqty) as cnqty,' +'case when sum(cqty)=0 then 0 else sum(cnqty)*100.0/sum(cqty) end as cnrate,' +'sum(cnnqty) as cnnqty,' +'case when sum(cnqty)=0 then 0 else sum(cnnqty)*100.0/sum(cnqty) end as cnnrate' +' into tempcrm1 from #tt group by ' [email protected] +' with rollup' exec (@sql)       set @sql='select case when itype=1 and directs is not null then 2 else itype end as itype,'    +' case when itype=1 and directs is null then '' 总计'' else directs end as directs'       declare @beg int,@end int,@a int,       @strbeg varchar(20),       @strend varchar(20)       set @a=0       set @beg=1       set @end =1       set @strbeg=''       set @strend=''       set @[email protected]       while @i>0 begin set @beg=charindex(',',@temp,@beg) set @strbeg=subString(@temp,@end,@[email protected]) if @i=1 begin      set @[email protected]+',case when itype=1 and [email protected]+' is not null and ' [email protected]+' is null then ''小计'' else [email protected]  +' end as [email protected] end else begin set @end=charindex(',',@temp,@beg+1) set @strend=subString(@temp,@beg+1,@end-(@beg+1)) set @[email protected]+',case when itype=1 and [email protected]+' is not null and ' [email protected]+' is null then ''小计'' else [email protected]  +' end as [email protected] set @[email protected]+1 set @[email protected] end set @[email protected] end set @[email protected][email protected]+',iqty,cqty,crate,cnqty,cnrate,cnnqty,cnnrate into tempcrm2 from tempcrm1' exec(@sql) drop table tempcrm1 set @sql='insert into tempcrm2 ' +' select 2 as itype,[email protected] +',sum(iqty) iqty,sum(cqty) as cqty,' +'case when sum(iqty)=0 then 0 else sum(cqty)*100.0/sum(iqty) end as crate,' +'sum(cnqty) as cnqty,' +'case when sum(cqty)=0 then 0 else sum(cnqty)*100.0/sum(cqty) end as cnrate,' +'sum(cnnqty) as cnnqty,' +'case when sum(cnqty)=0 then 0 else sum(cnnqty)*100.0/sum(cnqty) end as cnnrate' +' from #tt where directs like ''%华南'' or directs like ''%集团内'''  exec(@sql)       set  @sql=' select '   [email protected]+' from tempcrm2 a'   +' order by '   [email protected]          exec(@sql) drop table tempcrm2 end GO SET QUOTED_IDENTIFIER OFF  GO SET ANSI_NULLS ON  GO

顶啊。

已解决...等了几天唉.还是自己动手好.

估计是权限问题:

怎么解决的?分享一下吧。 没有细看你的程序,具体原因不好说,个人感觉把临时表改成CTE应该可以绕过这个问题。

上一篇:SQL Server 无法将“xxx”配置为分发服务器 100lcy_008]
下一篇:问个数据库的问题!! 10xinkong2008]

相关文章

相关评论