begin
open c_SearchBxdmx;
fetch c_SearchBxdmx into v_Searchbxdmx;
WHILE c_SearchBxdmx%FOUND LOOP
c_SearchBxdmx.jcje:=1000.00;
cc:=cc+1;
--here!!!
fetch c_SearchBxdmx into v_Searchbxdmx; END LOOP;
jg:=cc;
end pro_lx;
open c_SearchBxdmx;
fetch c_SearchBxdmx into v_Searchbxdmx;
WHILE c_SearchBxdmx%FOUND LOOP
c_SearchBxdmx.jcje:=1000.00;
cc:=cc+1;
--here!!!
fetch c_SearchBxdmx into v_Searchbxdmx; END LOOP;
jg:=cc;
end pro_lx;
c_SearchBxdmx.jcje:=1000.00;
open c_SearchBxdmx;
fetch c_SearchBxdmx into v_Searchbxdmx;
WHILE c_SearchBxdmx%FOUND LOOP
--HERE
c_SearchBxdmx.jcje:=1000.00;
~~~~~~~~~~~~~~~~~~~
--你是想这样吧:
v_Searchbxdmx.jcje:=1000.00;
cc:=cc+1;
--here!!!
fetch c_SearchBxdmx into v_Searchbxdmx; END LOOP;
jg:=cc;
end pro_lx;
1、cursor c_SearchBxdmx is select * from table_data_bxdmx where bxdhm=bxdhm;
变量名和列名一样,oracle会默认为是列名,所以这句语句把表中的所有数据都选出来了
2、cursor定义没有用for update,所以c_SearchBxdmx.jcje:=1000.00;是非法的
3、在循环中没有fetch其实一句sql能解决的,用过程简直是毫无必要
update table_data_bxdmx
set jcje = 1000
where bxdhm=p_bxdhm;
要获得更新的行数,用sql%rowcount就可以了
我要用存储过程修改很多项数据,而且是远程数据库,用存储过程会好一些。
cursor c_SearchBxdmx is select * from table_data_bxdmx where bxdhm=bxdhm for update;