J'ai la fonction surchargée suivante dans un package oracle (10g).La fonction packagée Oracle ne fonctionne pas via le serveur lié SQL Server 2008 R2
function fnDaysFromNowToDate(dd_mon_yyyy date) return number is days number;
--d2 varchar2(11):=to_char(sysdate,ddf);
Begin
dbms_output.put_line('d='|| to_date(dd_mon_yyyy,'dd-mon-yyyy'));
dbms_output.put_line('s='|| to_date(sysdate,'dd-mon-yyyy'));
return trunc(dd_mon_yyyy-trunc(sysdate));
--return 1;
end;
--- overload for varchar
function fnDaysFromNowToDate(dd_mon_yyyy varchar2) return number is days number;
Begin
dbms_output.put_line('d='|| to_date(dd_mon_yyyy,'dd-mon-yyyy'));
dbms_output.put_line('s='|| to_date(sysdate,'dd-mon-yyyy'));
return trunc(to_date(dd_mon_yyyy,'dd-mon-yyyy')-trunc(sysdate));
end;
Et tous les deux fonctionnent bien lorsqu'ils sont exécutés dans les Developer Oracle Sql, comme si
select t$stdt,to_char(t$tdat,'dd-Mon-YYYY') t$tdat, t$cuno,T$CPGS,T$QANP,T$DISC
from baan.ttdsls031020
where
trim(t$cuno) = '000811'
and pkgUtils.fnDaysFromNowToDate(to_char(t$tdat,'dd-Mon-YYYY')) > 1
and t$qanp = pkgPriceWorx.fndefaultQanp
and trim(t$cpgs) = '1AM00';
mais quand j'exécute même requête par serveur lié SQL à l'aide fournisseur OraOLEDB.Oracle
select * from openquery(hades,"
select t$stdt,to_char(t$tdat,'dd-Mon-YYYY') t$tdat, t$cuno,T$CPGS,T$QANP,T$DISC
from baan.ttdsls031020
where
trim(t$cuno) = '000811'
and pkgUtils.fnDaysFromNowToDate(to_char(t$tdat,'dd-Mon-YYYY')) > 1
and t$qanp = pkgPriceWorx.fndefaultQanp
and trim(t$cpgs) = '1AM00'
");
les erreurs suivantes sont levées
Le fournisseur OLE DB "OraOLEDB.Oracle" pour le serveur lié "hades" a renvoyé le message
ORA-01861: le littéral ne correspond pas à la chaîne de format
ORA-06512: à "SAAP.PKGUTILS", ligne 29 ". OLE DB fournisseur "OraOLEDB.Oracle" pour serveur lié "hades" a retourné le message "ORA-01861: littéral ne pas chaîne de format de correspondance ORA-06512: à" SAAP.PKGUTILS ", ligne 29". .Net SqlClient Fournisseur de données: Msg 7320, niveau 16, état 2, ligne 3 ne peut pas exécuter la requête "select t $ stdt, to_char (t $ tdat, 'jj-lun-aaaa') t $ tdat, t $ cuno, T $ CPGS, T $ QANP, T $ DISC de baan.ttdsls031020 où trim (t $ cuno) = '000811' et pkgUtils.fnDaysFromNowToDate (to_char (t $ tdat, 'jj-lun-aaaa'))> 1 et t $ qanp = pkgPriceWorx.fndefaultQanp et trim ($ t LDPC) = '1AM00' "contre fournisseur OLE DB "OraOLEDB.Oracle" pour le serveur lié "Hadès". *
Tous idée pourquoi ce comportement?
ce qui est là à "SAAP.PKGUTILS", ligne 29" ? –
fonction fnDaysFromNowToDate – TonyP
L'un qui reçoit une date? –