(p_upcode in varchar2, --属装图号
p_upname in varchar2, --属装图名
p_ditem in number, --键号
p_dcode in varchar2, --图号
p_dname in varchar2, --图名
p_dmaterial in varchar2, --材料
p_dweight in number, --单重
p_dtweight in number, --总重
p_dquantity in number, --总数
p_dre in varchar2, --备注
p_dother1 in varchar2, --工艺分工
p_productdwgcode in varchar2, --所属产品
p_g1 in varchar2,
p_g2 in varchar2, --领料单位
p_g3 in varchar2,
p_g4 in varchar2,
p_g5 in varchar2,
p_g6 in varchar2,
p_g7 in varchar2,
p_g8 in varchar2,
p_g9 in varchar2,
p_xialiao in varchar2, --下料尺寸
p_dinge in number, --定额
p_lldw in varchar2, --领料单位
p_d in varchar2, --外购标记
p_invcost in number, --计划价
p_dinvcost in number, --计划总价
p_cinvcode in varchar2, --物料码
p_invunit in varchar2, --计量单位
p_yongyou in varchar2, --用友码
p_changerate in number, --转化率
p_dxcb in number, --单向成本
p_sjyl in number,--设计用量
p_creator in varchar2, --创建人
-- p_createtime in date, --创建日期
p_modified in varchar2 --修改人
-- p_modifytime in date --修改日期
) as
num number;
num1 number;--单重
num2 number;--总重
num3 varchar2(50);--下料尺寸
num4 number;--定额
num5 number;--计划价
num6 number;--计划总价
num7 varchar2(10);--领料单位
num8 varchar2(20);--用友码
begin
select count(*)
into num
from XTDETAIL.XTDETAMSALL_DETAIL_2
WHERE UPCODE = p_upcode
and DITEM = p_ditem;
if num <> 0 then
select DWEIGHT,DTWEIGHT,XIALIAO,DINGE,INVCOST,DINVCOST,LLDW,YONGYOU
into num1,num2,num3,num4,num5,num6,num7,num8
from XTDETAIL.XTDETAMSALL_DETAIL_2
WHERE UPCODE = p_upcode
and DITEM = to_number(p_ditem);
if num1 <> p_dweight or num2 <> p_dtweight or num3 <> p_xialiao or num4 <> p_dinge or num5 <> p_invcost or num6 <> p_dinvcost or num7 <> p_lldw or num8 <> p_yongyou then
update XTDETAMSALL_DETAIL_2
set DWEIGHT = p_dweight,--单重
DTWEIGHT = p_dtweight,--总重
XIALIAO = p_xialiao,--下料尺寸
DINGE = p_dinge,--定额
INVCOST = p_invcost,--计划价
DINVCOST = p_dinvcost,--计划总价
LLDW = p_lldw, --领料单位
YONGYOU = p_yongyou,--用友码
MODIFIED = p_modified,
MODIFYTIME = sysdate
where UPCODE = p_upcode
and DITEM = p_ditem;
end if;
else
insert into XTDETAMSALL_DETAIL_2
(UPCODE,
UPNAME,
DITEM,
DCODE,
DNAME,
DMATERIAL,
DWEIGHT,
DTWEIGHT,
DQUANTITY,
DREMARK,
DOTHER1,
PRODUCTDWGCODE,
G1,
G2,
G3,
G4,
G5,
G6,
G7,
G8,
G9,
XIALIAO,
DINGE,
LLDW,
DMARK,
INVCOST,
DINVCOST,
CINVCODE,
INVUNIT,
YONGYOU,
CHANGERATE,
DXCB,
SJYL,
CREATOR,
CREATETIME)
values
(p_upcode,
p_upname,
p_ditem,
p_dcode,
p_dname,
p_dmaterial,
p_dweight,
p_dtweight,
p_dquantity,
p_dre,
p_dother1,
p_productdwgcode,
p_g1,
p_g2,
p_g3,
p_g4,
p_g5,
p_g6,
p_g7,
p_g8,
p_g9,
p_xialiao,
p_dinge,
p_lldw,
p_d,
p_invcost,
p_dinvcost,
p_cinvcode,
p_invunit,
p_yongyou,
p_dxcb,
p_sjyl,
p_changerate,
p_creator,
sysdate);
end if;
commit;
end insert_update;<?php
session_start();
if($_POST['Submit']==true){
$path1=$_POST['upcode'.$i];//属装图号 varchar2
$path2=$_POST['upname'.$i];//属装图名 varchar2
$path3=(float)$_POST['ditem'.$i]; //键号 number
$path4=$_POST['dcode'.$i];//图号 varchar2
$path5=$_POST['dname'.$i]; //图名 varchar2
$path6=$_POST['dmaterial'.$i]; //材料 varchar2
$path7=round($_POST['dweight'.$i],3); //单重 number
$path8=round((float)$_POST['dtweight'.$i],3); //总重
$path9=(float)$_POST['dquantity'.$i]; //数量 number
$path10=$_POST['dre'.$i]; //备注 varchar2
$path11=$_POST['dother1'.$i]; //工艺分工 varchar2
$path12=$_POST['dproductdwg'.$i]; //所属产品 varchar2
$path13=$_POST['G1'.$i]; //varchar2
$path14=$_POST['G2'.$i];
$path15=$_POST['G3'.$i];
$path16=$_POST['G4'.$i];
$path17=$_POST['G5'.$i];
$path18=$_POST['G6'.$i];
$path19=$_POST['G7'.$i];
$path20=$_POST['G8'.$i];
$path21=$_POST['G9'.$i];
$path22=$_POST['xialiao'.$i]; //下料尺寸 varchar2
$path23=round($_REQUEST['dinge'.$i],3); //定额 varchar2
$path24=$_POST['lldw'.$i];//领料单位 varchar2
$path25=$_POST['d'.$i];//自制/外购/标准件 varchar2
$path26=round($_POST['invcost'.$i],3);//计划价 number
$path27=round($_POST['dinvcost'.$i],3);//计划总价
$path28=$_POST['cinvcode'.$i];//新物料码 varchar2
$path29=$_POST['dinvunit'.$i]; //计量单位 varchar2
$path30=$_POST['yongyou'.$i];//用友码 varchar2
$path31=(float)$_POST['changerate'.$i];//转换率 number
$path32=round($_POST['dxcb'.$i],3);//number 单向成本-----》其实 就是 计划总价 DINVCOST
$path33=round($_POST['sjyl'.$i],3); // number 设计用量-----》总重 DTWEIGHT
$path34 = $_SESSION['pdmuser']; //创建人 varchar2
$path35 = $_SESSION['pdmuser']; //修改人
$sql = "BEGIN insert_update(:path1,:path2,:path3,:path4,:path5,:path6,:path7,:path8,:path9,:path10,:path11,:path12,:path13,:path14,:path15,:path16,:path17,:path18,:path19,:path20,:path21,:path22,:path23,:path24,:path25,:path26,:path27,:path28,:path29,:path30,:path31,:path32,:path33,:path34,:path35);END;";
$stmt = ociparse($conn,$sql);
//执行绑定
OCIBindByName($stmt,":path1",$path1);
OCIBindByName($stmt,":path2",$path2);
OCIBindByName($stmt,":path3",$path3);
OCIBindByName($stmt,":path4",$path4);
OCIBindByName($stmt,":path5",$path5);
OCIBindByName($stmt,":path6",$path6);
OCIBindByName($stmt,":path7",$path7);
OCIBindByName($stmt,":path8",$path8);
OCIBindByName($stmt,":path9",$path9);
OCIBindByName($stmt,":path10",$path10);
OCIBindByName($stmt,":path11",$path11);
OCIBindByName($stmt,":path12",$path12);
OCIBindByName($stmt,":path13",$path13);
OCIBindByName($stmt,":path14",$path14);
OCIBindByName($stmt,":path15",$path15);
OCIBindByName($stmt,":path16",$path16);
OCIBindByName($stmt,":path17",$path17);
OCIBindByName($stmt,":path18",$path18);
OCIBindByName($stmt,":path19",$path19);
OCIBindByName($stmt,":path20",$path20);
OCIBindByName($stmt,":path21",$path21);
OCIBindByName($stmt,":path22",$path22);
OCIBindByName($stmt,":path23",$path23);
OCIBindByName($stmt,":path24",$path24);
OCIBindByName($stmt,":path25",$path25);
OCIBindByName($stmt,":path26",$path26);
OCIBindByName($stmt,":path27",$path27);
OCIBindByName($stmt,":path28",$path28);
OCIBindByName($stmt,":path29",$path29);
OCIBindByName($stmt,":path30",$path30);
OCIBindByName($stmt,":path31",$path31);
OCIBindByName($stmt,":path32",$path32);
OCIBindByName($stmt,":path33",$path33);
OCIBindByName($stmt,":path34",$path34);
OCIBindByName($stmt,":path35",$path35);
ociexecute($stmt);
$committed = OCICommit($conn); // Test whether commit was successful. If error occurred, return error message
if(!$committed){
$error = OCIError($conn);
echo 'Commit failed. Oracle reports: ' .$error['message'];
} OCIFreeStatement($stmt);
}
}
?>
p_upname in varchar2, --属装图名
p_ditem in number, --键号
p_dcode in varchar2, --图号
p_dname in varchar2, --图名
p_dmaterial in varchar2, --材料
p_dweight in number, --单重
p_dtweight in number, --总重
p_dquantity in number, --总数
p_dre in varchar2, --备注
p_dother1 in varchar2, --工艺分工
p_productdwgcode in varchar2, --所属产品
p_g1 in varchar2,
p_g2 in varchar2, --领料单位
p_g3 in varchar2,
p_g4 in varchar2,
p_g5 in varchar2,
p_g6 in varchar2,
p_g7 in varchar2,
p_g8 in varchar2,
p_g9 in varchar2,
p_xialiao in varchar2, --下料尺寸
p_dinge in number, --定额
p_lldw in varchar2, --领料单位
p_d in varchar2, --外购标记
p_invcost in number, --计划价
p_dinvcost in number, --计划总价
p_cinvcode in varchar2, --物料码
p_invunit in varchar2, --计量单位
p_yongyou in varchar2, --用友码
p_changerate in number, --转化率
p_dxcb in number, --单向成本
p_sjyl in number,--设计用量
p_creator in varchar2, --创建人
-- p_createtime in date, --创建日期
p_modified in varchar2 --修改人
-- p_modifytime in date --修改日期
) as
num number;
num1 number;--单重
num2 number;--总重
num3 varchar2(50);--下料尺寸
num4 number;--定额
num5 number;--计划价
num6 number;--计划总价
num7 varchar2(10);--领料单位
num8 varchar2(20);--用友码
begin
select count(*)
into num
from XTDETAIL.XTDETAMSALL_DETAIL_2
WHERE UPCODE = p_upcode
and DITEM = p_ditem;
if num <> 0 then
select DWEIGHT,DTWEIGHT,XIALIAO,DINGE,INVCOST,DINVCOST,LLDW,YONGYOU
into num1,num2,num3,num4,num5,num6,num7,num8
from XTDETAIL.XTDETAMSALL_DETAIL_2
WHERE UPCODE = p_upcode
and DITEM = to_number(p_ditem);
if num1 <> p_dweight or num2 <> p_dtweight or num3 <> p_xialiao or num4 <> p_dinge or num5 <> p_invcost or num6 <> p_dinvcost or num7 <> p_lldw or num8 <> p_yongyou then
update XTDETAMSALL_DETAIL_2
set DWEIGHT = p_dweight,--单重
DTWEIGHT = p_dtweight,--总重
XIALIAO = p_xialiao,--下料尺寸
DINGE = p_dinge,--定额
INVCOST = p_invcost,--计划价
DINVCOST = p_dinvcost,--计划总价
LLDW = p_lldw, --领料单位
YONGYOU = p_yongyou,--用友码
MODIFIED = p_modified,
MODIFYTIME = sysdate
where UPCODE = p_upcode
and DITEM = p_ditem;
end if;
else
insert into XTDETAMSALL_DETAIL_2
(UPCODE,
UPNAME,
DITEM,
DCODE,
DNAME,
DMATERIAL,
DWEIGHT,
DTWEIGHT,
DQUANTITY,
DREMARK,
DOTHER1,
PRODUCTDWGCODE,
G1,
G2,
G3,
G4,
G5,
G6,
G7,
G8,
G9,
XIALIAO,
DINGE,
LLDW,
DMARK,
INVCOST,
DINVCOST,
CINVCODE,
INVUNIT,
YONGYOU,
CHANGERATE,
DXCB,
SJYL,
CREATOR,
CREATETIME)
values
(p_upcode,
p_upname,
p_ditem,
p_dcode,
p_dname,
p_dmaterial,
p_dweight,
p_dtweight,
p_dquantity,
p_dre,
p_dother1,
p_productdwgcode,
p_g1,
p_g2,
p_g3,
p_g4,
p_g5,
p_g6,
p_g7,
p_g8,
p_g9,
p_xialiao,
p_dinge,
p_lldw,
p_d,
p_invcost,
p_dinvcost,
p_cinvcode,
p_invunit,
p_yongyou,
p_dxcb,
p_sjyl,
p_changerate,
p_creator,
sysdate);
end if;
commit;
end insert_update;<?php
session_start();
if($_POST['Submit']==true){
$path1=$_POST['upcode'.$i];//属装图号 varchar2
$path2=$_POST['upname'.$i];//属装图名 varchar2
$path3=(float)$_POST['ditem'.$i]; //键号 number
$path4=$_POST['dcode'.$i];//图号 varchar2
$path5=$_POST['dname'.$i]; //图名 varchar2
$path6=$_POST['dmaterial'.$i]; //材料 varchar2
$path7=round($_POST['dweight'.$i],3); //单重 number
$path8=round((float)$_POST['dtweight'.$i],3); //总重
$path9=(float)$_POST['dquantity'.$i]; //数量 number
$path10=$_POST['dre'.$i]; //备注 varchar2
$path11=$_POST['dother1'.$i]; //工艺分工 varchar2
$path12=$_POST['dproductdwg'.$i]; //所属产品 varchar2
$path13=$_POST['G1'.$i]; //varchar2
$path14=$_POST['G2'.$i];
$path15=$_POST['G3'.$i];
$path16=$_POST['G4'.$i];
$path17=$_POST['G5'.$i];
$path18=$_POST['G6'.$i];
$path19=$_POST['G7'.$i];
$path20=$_POST['G8'.$i];
$path21=$_POST['G9'.$i];
$path22=$_POST['xialiao'.$i]; //下料尺寸 varchar2
$path23=round($_REQUEST['dinge'.$i],3); //定额 varchar2
$path24=$_POST['lldw'.$i];//领料单位 varchar2
$path25=$_POST['d'.$i];//自制/外购/标准件 varchar2
$path26=round($_POST['invcost'.$i],3);//计划价 number
$path27=round($_POST['dinvcost'.$i],3);//计划总价
$path28=$_POST['cinvcode'.$i];//新物料码 varchar2
$path29=$_POST['dinvunit'.$i]; //计量单位 varchar2
$path30=$_POST['yongyou'.$i];//用友码 varchar2
$path31=(float)$_POST['changerate'.$i];//转换率 number
$path32=round($_POST['dxcb'.$i],3);//number 单向成本-----》其实 就是 计划总价 DINVCOST
$path33=round($_POST['sjyl'.$i],3); // number 设计用量-----》总重 DTWEIGHT
$path34 = $_SESSION['pdmuser']; //创建人 varchar2
$path35 = $_SESSION['pdmuser']; //修改人
$sql = "BEGIN insert_update(:path1,:path2,:path3,:path4,:path5,:path6,:path7,:path8,:path9,:path10,:path11,:path12,:path13,:path14,:path15,:path16,:path17,:path18,:path19,:path20,:path21,:path22,:path23,:path24,:path25,:path26,:path27,:path28,:path29,:path30,:path31,:path32,:path33,:path34,:path35);END;";
$stmt = ociparse($conn,$sql);
//执行绑定
OCIBindByName($stmt,":path1",$path1);
OCIBindByName($stmt,":path2",$path2);
OCIBindByName($stmt,":path3",$path3);
OCIBindByName($stmt,":path4",$path4);
OCIBindByName($stmt,":path5",$path5);
OCIBindByName($stmt,":path6",$path6);
OCIBindByName($stmt,":path7",$path7);
OCIBindByName($stmt,":path8",$path8);
OCIBindByName($stmt,":path9",$path9);
OCIBindByName($stmt,":path10",$path10);
OCIBindByName($stmt,":path11",$path11);
OCIBindByName($stmt,":path12",$path12);
OCIBindByName($stmt,":path13",$path13);
OCIBindByName($stmt,":path14",$path14);
OCIBindByName($stmt,":path15",$path15);
OCIBindByName($stmt,":path16",$path16);
OCIBindByName($stmt,":path17",$path17);
OCIBindByName($stmt,":path18",$path18);
OCIBindByName($stmt,":path19",$path19);
OCIBindByName($stmt,":path20",$path20);
OCIBindByName($stmt,":path21",$path21);
OCIBindByName($stmt,":path22",$path22);
OCIBindByName($stmt,":path23",$path23);
OCIBindByName($stmt,":path24",$path24);
OCIBindByName($stmt,":path25",$path25);
OCIBindByName($stmt,":path26",$path26);
OCIBindByName($stmt,":path27",$path27);
OCIBindByName($stmt,":path28",$path28);
OCIBindByName($stmt,":path29",$path29);
OCIBindByName($stmt,":path30",$path30);
OCIBindByName($stmt,":path31",$path31);
OCIBindByName($stmt,":path32",$path32);
OCIBindByName($stmt,":path33",$path33);
OCIBindByName($stmt,":path34",$path34);
OCIBindByName($stmt,":path35",$path35);
ociexecute($stmt);
$committed = OCICommit($conn); // Test whether commit was successful. If error occurred, return error message
if(!$committed){
$error = OCIError($conn);
echo 'Commit failed. Oracle reports: ' .$error['message'];
} OCIFreeStatement($stmt);
}
}
?>
程序中存在借用现象(注释:当一条记录重复在程序中出现,但是在数据库中的表中只保存一次)当我在表单中输入内容后,并不能全部进行保存,是不是在程序的表单中某一条记录操作两次后就不能很顺利的调用这个存储过程了?
是不是需要我在存储过程中过滤掉重复的记录?
请高手们指教!
明明在compute.php中的for循环中,我var_dump($_REQUEST['dinge'.$i])这个字段的时候 ,即使拥有相同的upcode和ditem(联合主键)两条记录, 是可以分别显示出来的,
在insert_update这个存储过程中我也进行了判断,根据表中是否含有相同的记录,进行相对应的操作(插入或是删除),但是经过保存后这种重复记录的保存却不能实现呢?
请问这是怎么一种情况?
输出一下php执行的sql结果,然后手动执行一下
$stmt = ociparse($conn,$sql);
var_dump($sql);
我在$stmt后面添加了var_dump($sql);
但是显示出来的结果也只是若干个这样的字段:BEGIN insert_update(:path1,:path2,:path3,:path4,:path5,:path6,:path7,:path8,:path9,:path10,:path11,:path12,:path13,:path14,:path15,:path16,:path17,:path18,:path19,:path20,:path21,:path22,:path23,:path24,:path25,:path26,:path27,:path28,:path29,:path30,:path31,:path32,:path33,:path34,:path35);END;
请问输出sql的时候能否让其把变量的值也都带进去进行显示呢?