一个逻辑复杂的SQL

秋雨飘落 2011-07-29 04:22:38
现在需要一个存储过程,表名作为一个参数输入,每个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;

...全文
144 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
iflytek_zswang 2011-07-30
  • 打赏
  • 举报
回复
create or replace procedure pro_zswang(table_name_1 in varchar) is

vol_sql varchar2(20000); ------列SQL
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;
秋雨飘落 2011-07-29
  • 打赏
  • 举报
回复
顶一下~~~~~~~

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧