CREATE OR REPLACE procedure APPS.wst_hr_province(p_date in varchar2)
is
begin
declare
str varchar2(1000);
str2 varchar2(1000);
flag number ;
v_province FND_FLEX_VALUES_VL.DESCRIPTION%type;
v_count number;
p_date_start varchar2(10):=p_date;
cursor v_cursor is
select description ,count(*)
from wshr_emp_personal a,wshr_emp_general d,wshr_emp_header
b,FND_FLEX_VALUES_VL c
where a.header_id =b.header_id
and c.FLEX_VALUE=a.PROVINCE
and a.emp_id=d.emp_id
and c.FLEX_VALUE_SET_ID='1017038'
and (
d.leave_date is null or
d.leave_date>to_date(p_date_start||'1231','yyyymmdd')
)
and d.join_date<=to_date(p_date_start||'1231','yyyymmdd')
group by description; begin
select count(*) INTO FLAG from user_tables where table_name ='TEMP_WHP';
IF(FLAG=0) THEN
str:= 'CREATE GLOBAL TEMPORARY TABLE TEMP_WHP(
province VARCHAR2(20),
count_person number
) ON COMMIT PRESERVE ROWS ';
execute immediate str;
END IF ;
open v_cursor;
loop
fetch v_cursor into v_province,v_count;
execute immediate 'insert into TEMP_WHP
VALUES(''||v_province||'',''|| v_count||'')'; exit when v_cursor%notfound ;
-- commit;
end loop;
close v_cursor;
end ;
END ;
以上这段代码 编译能通过 ,调用也不会报错 ,但是我查看数据的时候表还是空的 (也是在同一个session下) ,sql 语句是有数据返回的
但是没有insert 到我的临时表里面 ,不知道是什么原因 请大家帮帮忙啊
,谢谢各位啦 !
is
begin
declare
str varchar2(1000);
str2 varchar2(1000);
flag number ;
v_province FND_FLEX_VALUES_VL.DESCRIPTION%type;
v_count number;
p_date_start varchar2(10):=p_date;
cursor v_cursor is
select description ,count(*)
from wshr_emp_personal a,wshr_emp_general d,wshr_emp_header
b,FND_FLEX_VALUES_VL c
where a.header_id =b.header_id
and c.FLEX_VALUE=a.PROVINCE
and a.emp_id=d.emp_id
and c.FLEX_VALUE_SET_ID='1017038'
and (
d.leave_date is null or
d.leave_date>to_date(p_date_start||'1231','yyyymmdd')
)
and d.join_date<=to_date(p_date_start||'1231','yyyymmdd')
group by description; begin
select count(*) INTO FLAG from user_tables where table_name ='TEMP_WHP';
IF(FLAG=0) THEN
str:= 'CREATE GLOBAL TEMPORARY TABLE TEMP_WHP(
province VARCHAR2(20),
count_person number
) ON COMMIT PRESERVE ROWS ';
execute immediate str;
END IF ;
open v_cursor;
loop
fetch v_cursor into v_province,v_count;
execute immediate 'insert into TEMP_WHP
VALUES(''||v_province||'',''|| v_count||'')'; exit when v_cursor%notfound ;
-- commit;
end loop;
close v_cursor;
end ;
END ;
以上这段代码 编译能通过 ,调用也不会报错 ,但是我查看数据的时候表还是空的 (也是在同一个session下) ,sql 语句是有数据返回的
但是没有insert 到我的临时表里面 ,不知道是什么原因 请大家帮帮忙啊
,谢谢各位啦 !
解决方案 »
- oracle安装之路命途多舛啊~~~~这不问题又来了 ,还是希望哪位大侠帮帮忙解决一下吧
- 问个数据表关联约束的问题
- [紧急求助]libclntsh.so.10.1问题error while loading shared libraries: libclntsh.so.10.1: cannot open shared object file: No such file o
- 从MS-SQL迁移到ORACLE最好的办法?
- Oracle, 分组统计问题
- 在线急求存储过程
- 如果修改oracle中日期类型的默认格式 (按以前的方法不行)
- 高难度问题,先把快照改名,再删除原来的快照后出问题
- 存儲過程中如何限制返回的數字的小數倍數為2位?謝謝,馬上結帳。
- 高分相送,用asp连接oracle9i的问题,在线等待!
- orace 9i导出问题及oracle 10g导入方法
- 什么情况下的视图更新数据,不要使用触发器
2、滥用动态sql,如上面的insert语句,由于必能原因在可不使用的时候尽量不要用。养成良好习惯!
3、事务完成记得commit!否在,在存储过程外,非当前执行存储过程的会话将查不到数据。
4、学会使用pl/sql developer进行单步调试!