中繼資料不一致解決的一個執行個體

來源:互聯網
上載者:User
解決|資料 預存程序如下:
ALTER  procedure d_sel_bj_xcl
 @filter varchar(2000),@sortstr varchar(2000),@iskw bit
as  
 set @sortstr='spzyflid,spkw,spid'
 declare @sql varchar(8000)
 set @sql='
 select spid,ckid,spmc,spgg,czmc,bzmc,cdmc,zlmc,spjldw,spkw,'
 if @iskw=1
  set @sql=@sql+'kwh,'
 set @sql=@sql+'
  sum(case when a.crklbfx=1 then sl else -sl end) as spxcl from (
  select a.*,b.spzyflid,b.spmc,b.spgg,cz.czmc,bz.bzmc,cd.cdmc,zl.zlmc,b.spjldw,
   spkw=case when patindex(''%([0-9][0-9][0-9][0-9])'',b.spmc)>0
     then right(spmc,6) else '''' end,
   c.crklbfx from bjlsb a
   join crklb c on a.crlb=c.crklbid
   left join sp b on a.spid=b.spid
   left join cz on b.spczid=cz.czid
   left join bz on b.spbzid=bz.bzid
   left join zl on b.spzlid=zl.zlid
   left join cd on b.spcdid=cd.cdid
   where a.iszf is null '
 if len(@filter)>0
  set @sql=@sql+' and '+@filter
 set @sql=@sql+') a   
  group by spid,spzyflid,ckid,spmc,spgg,czmc,bzmc,cdmc,zlmc,spjldw,spkw'
 if @iskw=1
  set @sql=@sql+',kwh'
 if len(@sortstr)>0
  set @sql=@sql+' order by '+@sortstr
 exec(@sql)


調用的過程如下:
select * from
openrowset('sqloledb',
 'jszg';'sa';'6162900',
 'execute zgerp..d_sel_bj_xcl ''ckid=''''45'''''','''',0') as a

結果為:
伺服器: 訊息 7355,層級 16,狀態 1,行 1
OLE DB 提供者 'sqloledb' 為列提供的中繼資料不一致。執行時更改了名稱。
OLE DB 錯誤跟蹤[Non-interface error:  OLE DB provider returned different names for a column: ProviderName='sqloledb', CompileTimeColumnName='kwh', RunTimeColumnName='spxcl', Rowset=execute zgerp..d_sel_bj_xcl 'ckid=''45''','',0]。

仔細看一下就可以看到kwh列的存在,如果使用庫位管理,那麼,庫位號就是一個匯總的依據,但查詢時設為0,這和編譯產生的列不同,編譯產生所有的列,所以就出現了這個錯誤,實在想不出什麼好辦法,就將查詢時將0設為1,反正不使用庫位來管理,得出的數是不受影響的:)

相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

11.11 Big Sale for Cloud

Get Unbeatable Offers with up to 90% Off,Oct.24-Nov.13 (UTC+8)

Get It Now >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。