现在需要一个存储过程,表名作为一个参数输入,每个SSFJ字段有6月,7月的记录,判断每个单位,6月 和 7月的数据是否一致,每个字段都要判断,因为是表名是参数,所以判断的列也要从系统表里获取,
除了SSFJ,SBSJ不用判断以外,其它都要判断
结果存放到一个表里,全部一样,true,如果不一样,反馈字段名字,
下面是一个例子create table ZFTANG_TEST_01
(
SSFJ VARCHAR2(50),--所属单位
SBSJ VARCHAR2(50),--时间
SL1 NUMBER,
SL2 NUMBER,
SL3 NUMBER
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);prompt Disabling triggers for ZFTANG_TEST_01...
alter table ZFTANG_TEST_01 disable all triggers;
prompt Deleting ZFTANG_TEST_01...
delete from ZFTANG_TEST_01;
commit;
prompt Loading ZFTANG_TEST_01...
insert into ZFTANG_TEST_01 (SSFJ, SBSJ, SL1, SL2, SL3)
values ('1', '201107', 1, 1, 1);
insert into ZFTANG_TEST_01 (SSFJ, SBSJ, SL1, SL2, SL3)
values ('2', '201107', 1, 1, 1);
insert into ZFTANG_TEST_01 (SSFJ, SBSJ, SL1, SL2, SL3)
values ('3', '201107', 2, 2, 2);
insert into ZFTANG_TEST_01 (SSFJ, SBSJ, SL1, SL2, SL3)
values ('4', '201107', 3, 3, 3);
insert into ZFTANG_TEST_01 (SSFJ, SBSJ, SL1, SL2, SL3)
values ('5', '201107', 4, 4, 4);
insert into ZFTANG_TEST_01 (SSFJ, SBSJ, SL1, SL2, SL3)
values ('1', '201106', 1, 2, 1);
insert into ZFTANG_TEST_01 (SSFJ, SBSJ, SL1, SL2, SL3)
values ('2', '201106', 1, 1, 1);
insert into ZFTANG_TEST_01 (SSFJ, SBSJ, SL1, SL2, SL3)
values ('3', '201106', 2, 2, 2);
insert into ZFTANG_TEST_01 (SSFJ, SBSJ, SL1, SL2, SL3)
values ('4', '201106', 3, 3, 3);
insert into ZFTANG_TEST_01 (SSFJ, SBSJ, SL1, SL2, SL3)
values ('5', '201106', 4, 4, 5);
commit;
除了SSFJ,SBSJ不用判断以外,其它都要判断
结果存放到一个表里,全部一样,true,如果不一样,反馈字段名字,
下面是一个例子create table ZFTANG_TEST_01
(
SSFJ VARCHAR2(50),--所属单位
SBSJ VARCHAR2(50),--时间
SL1 NUMBER,
SL2 NUMBER,
SL3 NUMBER
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);prompt Disabling triggers for ZFTANG_TEST_01...
alter table ZFTANG_TEST_01 disable all triggers;
prompt Deleting ZFTANG_TEST_01...
delete from ZFTANG_TEST_01;
commit;
prompt Loading ZFTANG_TEST_01...
insert into ZFTANG_TEST_01 (SSFJ, SBSJ, SL1, SL2, SL3)
values ('1', '201107', 1, 1, 1);
insert into ZFTANG_TEST_01 (SSFJ, SBSJ, SL1, SL2, SL3)
values ('2', '201107', 1, 1, 1);
insert into ZFTANG_TEST_01 (SSFJ, SBSJ, SL1, SL2, SL3)
values ('3', '201107', 2, 2, 2);
insert into ZFTANG_TEST_01 (SSFJ, SBSJ, SL1, SL2, SL3)
values ('4', '201107', 3, 3, 3);
insert into ZFTANG_TEST_01 (SSFJ, SBSJ, SL1, SL2, SL3)
values ('5', '201107', 4, 4, 4);
insert into ZFTANG_TEST_01 (SSFJ, SBSJ, SL1, SL2, SL3)
values ('1', '201106', 1, 2, 1);
insert into ZFTANG_TEST_01 (SSFJ, SBSJ, SL1, SL2, SL3)
values ('2', '201106', 1, 1, 1);
insert into ZFTANG_TEST_01 (SSFJ, SBSJ, SL1, SL2, SL3)
values ('3', '201106', 2, 2, 2);
insert into ZFTANG_TEST_01 (SSFJ, SBSJ, SL1, SL2, SL3)
values ('4', '201106', 3, 3, 3);
insert into ZFTANG_TEST_01 (SSFJ, SBSJ, SL1, SL2, SL3)
values ('5', '201106', 4, 4, 5);
commit;
v_num number; ------数量begin
execute immediate '
for cursor in (select ssfj from table_name_1)
loop
select wmsys.wm_concat(column_name) into vol_sql
from user_tab_columns t where ssfj = cursor.ssfj
and T.COLUMN_NAME <> ''SBSJ''
AND table_name = upper(''zswang_test_01'') and (SBSJ =to_char(sysdate,''yyyymm'') or SBSJ =to_char(sysdate,''yyyymm'') ;
with a as (select vol_sql from table_name_1 )
select distinct vol_sql into v_num from a group by vol_sql;
insert into bd_log values(table_name_1,cursor.ssfj,v_num);
commit;
end loop;'
;
end;