+ -
当前位置:首页 → 问答吧 → asp 调用oracle 存储过程报错“80040e21”

asp 调用oracle 存储过程报错“80040e21”

时间:2011-09-07

来源:互联网

求助
oracle存储过程

create or replace procedure proc_test(
t_fcid in number
) is
v_sum1 NUMBER(10);
v_quan NUMBER(10);
begin
  select sum(MATERIALTOTAL) into v_sum1 from kl_materialfc where parentitemid = t_fcid ;
 select quantity into v_quan from kl_financecost where fcid = t_fcid;
 update kl_financecost set FCCOSTMATERIAL = to_char(round(v_sum1/v_quan,2)) where fcid = t_fcid;
end proc_test;


asp代码
dim cmdTemp
'建立命令对象 
Set cmdTemp = Server.CreateObject("ADODB.Command") 
'指定要执行的是一个存储过程
cmdTemp.ActiveConnection = objCn 
cmdTemp.CommandType = 4 'adCmdStoredProc 4
cmdTemp.CommandText = "proc_test"  
'adNumeric 131  
'adParamInput 1
  cmdTemp.Parameters.Append cmdTemp.CreateParameter("t_fcid",131,1,10,2104285) 
cmdTemp.Execute (137行)



报错

Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e21' 

多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。 

/Forms/KL/common/dbfinancecost.asp,行 137 




作者: threecolors_duwei   发布时间: 2011-09-07

如果把存储过程直接赋值
create or replace procedure proc_test is
t_fcid number(10);
v_sum1 NUMBER(10);
v_quan NUMBER(10);
begin
  t_fcid := 2104285;
 select sum(MATERIALTOTAL) into v_sum1 from kl_materialfc where parentitemid = t_fcid ;
 select quantity into v_quan from kl_financecost where fcid = t_fcid;
 update kl_financecost set FCCOSTMATERIAL = to_char(round(v_sum1/v_quan,2)) where fcid = t_fcid;
end proc_test;

asp里注销
 cmdTemp.Parameters.Append cmdTemp.CreateParameter("t_fcid",131,1,10,2104285) 

则可以正确执行,请问是啥原因??

作者: threecolors_duwei   发布时间: 2011-09-07