急!急!急! Delphi+Oracle存储过程(多少分都行,在线等...)

cyhui 2003-10-16 02:08:38
Oracle数据库中有这样一个表table1(id varchar2(10),content blob);
还有一个这样的存储过程
CREATE OR REPLACE PROCEDURE "AA" (v_id in varchar2, v_Content in blob ) is
begin
insert into table1(id,content) values (v_id, v_CONTENT);
end aa;
目的是想通过调存储过程把整个文本文件保存到数据库中.
连接没问题.
我在Delphi中这样调用:
with ADOStoredProc1 do
begin
ProcedureName:='AA';
parameters.ParamByName('V_ID').Value:='1';
Parameters.ParamByName('V_CONTENT').LoadFromFile('c:\1.txt',ftblob);
ExecProc;
end;
或改用流:
MS:=TMemoryStream.Create;
try
ms.LoadFromFile('c:\1.txt');
except
MS.Free;
exit;
end;
try
with ADOStoredProc1 do
begin
ProcedureName:='AA';
parameters.ParamByName('V_ID').Value:='1';
Parameters.ParamByName('v_content').DataType:=ftblob;
Parameters.ParamByName('v_content').LoadFromStream(ms,ftblob);
ExecProc;
end;
except

end;

两种情况运行后Oracle都报参数数量或类型错误!
类型我已试过多种了,如ftvarbytes等;
但用ADOQuery直接用SQL语句insert into则可以实现,请问是语句有问题还是其它的原因.
帮帮我,已经好几天了......

...全文
55 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyhui 2003-11-03
  • 打赏
  • 举报
回复
谢谢各位的支持,问题已解决。
在连接字符串中添加 Extended Properties="PLSQLRSet=1;"
就可以了。
lsy0919 2003-10-22
  • 打赏
  • 举报
回复
给你个例子看看有没有帮助,记得要给分啊!!!!!!!
TBlobField(ADODataset1.FindField('sqlxx0')).LoadFromFile(filename);
beckhambobo 2003-10-21
  • 打赏
  • 举报
回复
对应参数可以用delphi自动获取过程对应参数类型,在属性对象栏可以得到,这个问题不难
JCC0128 2003-10-21
  • 打赏
  • 举报
回复
对呀,小虫的有道理~~~

全部在adoquery里面写代码,你的也没几行代码,不存在维护问题
yangqingdelphi 2003-10-20
  • 打赏
  • 举报
回复
你用的是ado还是别的.
ado中ms提供的不支持blob。用oracle提供的.
mosaic 2003-10-20
  • 打赏
  • 举报
回复
问题可能在v_Content in blob的定义
cyhui 2003-10-20
  • 打赏
  • 举报
回复
我用的是ADO,因为我目前的系统是用Ms Sql 2000,和Oracle有一个接口,存储过程由Oracle提供
Drate 2003-10-20
  • 打赏
  • 举报
回复
如果你不用存储过程 ,而直接写入数据库的话,会很方便的呀
用ORACLE的存储过程的时候,你传递参数可能会比较困难一些
pingshx 2003-10-20
  • 打赏
  • 举报
回复
试试ODAC控件
JCC0128 2003-10-20
  • 打赏
  • 举报
回复
ado 跟oracle存储过程 结合 在数据类型上面 问题很多,
我传时间参数都没传成功,后来都转化成varchar2类型来处理的

看你的能不能用varchar2
cyhui 2003-10-16
  • 打赏
  • 举报
回复
报错如下:
Project re.exe raised exception class EoleException with message ‘ORA-06550’:第一行,第7列;
PLS-00306:调用’AA’时参数数量和类型错误
ORA-06550’:第一行,第7列;
PL/SQL:Statement ignored’,Process stopped.Use step or Run to continue.
上海老李 2003-10-16
  • 打赏
  • 举报
回复
是在哪报错?因为好多人不用ORACLE,所以你把报错信息也贴出来看看

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧