//以下这样写,执行正常 其中Param2和Param3的参数数据类型不一致
with ADOStoredProc1, ADOStoredProc1.Parameters do
begin
ParamByName('Param1').Value := Value1;
ParamByName('Param2').Value := Value2;
ParamByName('Param3').Value := Value3;
execproc;
end;//以下这样写,执行出现错误:提示参数值或类型错误
with ADOStoredProc1, ADOStoredProc1.Parameters do
begin
ParamByName('Param1').Value := Value1;
ParamByName('Param3').Value := Value3;
ParamByName('Param2').Value := Value2;
execproc;
end;
with ADOStoredProc1, ADOStoredProc1.Parameters do
begin
ParamByName('Param1').Value := Value1;
ParamByName('Param2').Value := Value2;
ParamByName('Param3').Value := Value3;
execproc;
end;//以下这样写,执行出现错误:提示参数值或类型错误
with ADOStoredProc1, ADOStoredProc1.Parameters do
begin
ParamByName('Param1').Value := Value1;
ParamByName('Param3').Value := Value3;
ParamByName('Param2').Value := Value2;
execproc;
end;
将存储过程作为一般的sql语句执行即可,只需构造好这个存储过程的sql。
另外我用doa时,调用过程或函数写参数时有两种方式,一种就是按照参数的顺序,另一种可以按照参数的名称,你可以试试ADO能否按参数名称来传递值。
MSN:[email protected]
ParamByName('Param3').Value := Value3;
ParamByName('Param2').Value := Value2;过程的参数类型是什么?都是VARCHAR2吗?
这个是包你传递的参数类型不对,如数值型的你传进了字符型,
你转化一下不就可以了?