未测试,随手写的create or replace procedure aaaaaa(sBeginDate in date) as
i_code number;
cursor c_cur is
select A.表1.单位编码 from A.表1;
begin
open c_cur;
loop
fetch c_cur into i_code;
exit when c_cur %NOTFOUND;
update A.表1 set A.表1.总数 = (select count(*) from B.表2 where B.表2.登记日期 <= sBeginDate AND B.表2.单位编码 = i_code) where A.表1.单位编码 = i_code;
COMMIT;
END LOOP;
CLOSE c_cur;
end;
i_code number;
cursor c_cur is
select A.表1.单位编码 from A.表1;
begin
open c_cur;
loop
fetch c_cur into i_code;
exit when c_cur %NOTFOUND;
update A.表1 set A.表1.总数 = (select count(*) from B.表2 where B.表2.登记日期 <= sBeginDate AND B.表2.单位编码 = i_code) where A.表1.单位编码 = i_code;
COMMIT;
END LOOP;
CLOSE c_cur;
end;
1、按照你的方式将存储过程建立在方案A中,提示说方案B的表(select count(*) from B.表2 )无效或不存在啊。
2、送我一张渔网吧。我问题中只是一个简化的模型。实际应用中要复杂一些。所以有几个疑问还请指教:
a、阁下的c_cur是一个临时表吗?
b、我的A.表1.单位编码是字符型,是不是应该将 i_code number改了啊。
c、在实际查询时B.表2.单位编码 = i_code不是等于,而是LIKE 如单位编码 "LIKE 2301%",可以么?在下的问题可能很蠢,望见谅。
as
begin
update 表1 set 总数=(select count(1) from 表2 where 表1.单位编码=表2.单位编码 and 登记日期>p_sBeginDate group by 表1.单位编码);
end;
/
2、a. c_cur是游标
b. 你按自己的数据类型改
c. like可以