这有什么问题, 我收到此错误
OLE DB provider "OraOLEDB.Oracle" for linked server "hades" returned message "ORA-00933: SQL command not properly ended
ORA-06512: at "SAAP.EDI", line 1416".
OLE DB provider "OraOLEDB.Oracle" for linked server "hades" returned message "ORA-00933: SQL command not properly ended
ORA-06512: at "SAAP.EDI", line 1416".
Msg 7320, Level 16, State 2, Line 2
Cannot execute the query "select * from table(edi.ftCustomerCatalog('010','145','000164'))" against OLE DB provider "OraOLEDB.Oracle" for linked server "hades".
代码:
function ftCustomerCatalog(comno varchar2,cpls varchar2, cuno varchar2) return tblCustomerCatalog pipelined
is
c sys_refCursor;
r recCustomerCatalog;
sq varchar2(3000);
begin
sq:='select
a.comno
,a.t$cpls
,coalesce(a.t$cuno,b.t$cuno) as t$cuno
,a.t$cpgs,a.t$item
,a.t$Upcd
,a.t$dsca
,a.t$wght
,a.t$ship
,coalesce(b.t$stdt,c.t$stdt,d.t$stdt,e.t$stdt,f.t$stdt) as T$STDT
,coalesce(b.t$tdat,c.t$tdat,d.t$tdat,e.t$tdat,f.t$tdat) as t$tdat
,coalesce(b.t$qanp,c.t$qanp,d.t$qanp,e.t$qanp,f.t$qanp) as t$qanp
,a.t$pric
,coalesce(b.t$disc,c.t$disc,d.t$disc,e.t$disc,f.t$disc) as t$disc
,coalesce(b.source,c.source,d.source,e.source,f.source) as Source
from table(edi.ftAllPlCatalogs(:comno,cpls)) where t$cuno=:cuno a
left join table(edi.ft30ciDiscounts(:comno,:cpls,:cuno)) b on a.t$item=b.T$item and a.t$cuno=b.t$cuno
Left Join table(edi.ft31CPGDiscounts(:comno,:cpls,:cuno)) c on a.t$cpgs=c.t$cpgs
left Join table(edi.ft31Cdiscounts (:comno,:cpls,:cuno)) d on d.t$cpgs is null
left join table(edi.ft33plpgDiscounts(:comno,:cpls)) e on d.t$disc is null and a.t$cpgs=e.t$cpgs
left join table(edi.ft33PlDiscount(:comno,:cpls)) f on e.t$disc is null
Order by A.T$CPGS, a.t$item;';
Open c for SQ using
comno,cpls,cuno
,comno,cpls,cuno
,comno,cpls,cuno
,comno,cpls,cuno
,comno,cpls
,comno,cpls;
LOOP
fetch c into r;
exit when c%notfound;
pipe row(r);
END LOOP;
close c;
end;
答案 0 :(得分:2)
我不认为语法
t$stdt=coalesce(b.t$stdt,c.t$stdt,d.t$stdt,e.t$stdt,f.t$stdt)
在Oracle中有效。
假设意思是为表达式提供别名,我相信Oracle的等价物将是:
coalesce(b.t$stdt,c.t$stdt,d.t$stdt,e.t$stdt,f.t$stdt) AS stdt
(AS关键字开始可选)