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

threecolors_duwei 2011-09-07 11:17:18
求助
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




...全文
50 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ice241018 2011-09-08
你把t_fcid长度改大点试试
回复
set tmpParam = cmdTemp.CreateParameter("t_fcid",131,1,10,g_rsid)
tmpParam.NumericScale = 2
tmpParam.Precision = 10
cmdTemp.Parameters.Append tmpParam

如果规定 adDecimal 或者 adNumeric 数据类型,则必须设置 Parameter 对象的NumericScale 和 Precision 属性。
回复
如果把存储过程直接赋值
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)

则可以正确执行,请问是啥原因??
回复
相关推荐
发帖
智能路由器
创建于2018-06-15

638

社区成员

智能路由器通常具有独立的操作系统,包括OpenWRT、eCos、VxWorks等,可以由用户自行安装各种应用,实现网络和设备的智能化管理。
申请成为版主
帖子事件
创建了帖子
2011-09-07 11:17
社区公告
暂无公告