首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

▲通过ADO调用oracle自定义函数报错,该如何处理

2012-03-27 
▲通过ADO调用oracle自定义函数报错oracle自定义函数:FUNCTION Ndaysafter(TheDay in varchar2,n in number

▲通过ADO调用oracle自定义函数报错
oracle自定义函数:
FUNCTION Ndaysafter(
TheDay in varchar2,
n in number,
fmt in varchar2
)

return varchar2 is aDate varchar2(10); 

BEGIN
 
  aDate:= to_char ( to_date(TheDay,fmt) + n ,fmt); 
  return aDate;
  EXCEPTION WHEN OTHERS THEN
  return SQLCODE;

END;
-----------------------
在客户端(c++ builder开发)通过ADO连接ORACLE数据,执行一下SQL:
Select ACCNO, ,Ndaysafter('20090513',13,'YYYYMMDD') aa  
From A
Where rownum<=4
-----------------------
结果报错:数据类型不被支持
其他2个自定义函数也报同样的错。
以上SQL在SQL PULS 、toad、golden都正常。
哪位高手知道出错原因?谢谢~!
[size=24px][/size]



[解决办法]
偶用delphi试了下,没有问题
procedure TForm1.Button2Click(Sender: TObject);
begin
with Adoquery1 do
begin
close;
sql.text := 'Select id,NAME,Ndaysafter(''20090513'',13,''YYYYMMDD'') aa From A Where rownum <=4 ';
Open;
end;
end;

不知道你的ado联接时的驱动用的是哪个
Provider=OraOLEDB.Oracle.1;Password=test01;Persist Security Info=True;User ID=test01;Data Source=orcl10g;Extended Properties=""我用的是OraOLEDB.Oracle.1

Provider=MSDAORA.1;Password=test01;User ID=test01;Data Source=orcl10g;Persist Security Info=True
都没有问题
[解决办法]
我测试过Provider=OraOLEDB.Oracle.1;通过

Provider=MSDAORA.1;报错。

建议用OraOLEDB.Oracle.1

热点排行