请各位高手帮我一把,我用delphi调用存储过程老出错(100分)

  • 主题发起人 主题发起人 hzyang2003
  • 开始时间 开始时间
H

hzyang2003

Unregistered / Unconfirmed
GUEST, unregistred user!
我在用控件Tstoredproc调用Oracle中的procedure时出现错误提示为
“operation not applicable”.调用如下代码出错

StoredProc1.Prepare;
StoredProc1.Params[0].DataType:=ftstring;
StoredProc1.Params[0].AsString := '20020221';
StoredProc1.ExecProc;
存储过程为
CREATE OR REPLACE PROCEDURE ppp(date2 IN CHAR)
as
yyyy varchar2(4);
mmmm varchar2(2);
dddd varchar2(2);
begin
yyyy:=substr(date2,1,4);
mmmm:=substr(date2,5,2);
dddd:=substr(date2,7,2);
delete from a01 where nf=yyyy and yf=mmmm and rf=dddd;

end;
但如果我使用adocommand控件则不会出错,但我在程序设计中一直使用的的是bde编程,不想使用ado控件,大家帮帮忙,看是什么原因



 
高手都哪儿去了,我用的是delphi6.0+orqcle8.06,帮帮忙
 
1.StoredProc1指定的存储过程是否有执行的权限
2.存储过程的参数好像也不匹配,最好用varchar 并指定长度
 
query.close;
query.sql.text:='exec 过程名 参数';
query.execsql;
 
only you,StoredProc1有足够的权限,如果参数不对,可在adocommand控件中就没有问题,而且存储过程编译也没有错
一少,storedproc1如何才能运行,如果用query,请举例说明参数的调用方法
 
是delphi的bug,还是oracle的bug
 
你最好把参数类型对应好,我也遇过类似情况!
StoredProc1.Prepare;
StoredProc1.Params[0].AsString := '20020221';
StoredProc1.ExecProc;
 
參數不匹配.[8D]
 
luckywzy,我写的和你写的一样,都是字符串,是否说详细,应如何对应
 
你可以不用StoredProc1控件,用query控件
var str:string;
begin
str:='exec ppp '+''''+'20020221'+'''';
query1.close;
query1.sql.clear;
query1.sql.add();
query1.execsql;
end;
其中''''的意思就是一个单引号,这样用保证没问题;
 
lycok,storedproc控件为什么不行
 
storedproc应该也可以,但是你的情况我还没具体试过,我调用存储过程都是用query,
因为我以前用storedproc遇到过这样的情况,当数据库中得字段类型是binary时,
参数就传不进去,所以我一直认为borland设计个storedproc出来纯粹是多余之举。
 
我想不可能storeproc控件是鸡胁,当存储过程不加任何参数,程序能通过,关键是一加入参数就出错.请delphi高手踊跃up
 
操,没有一个能解决
 
多人接受答案了。
 
后退
顶部