pb中调用oracle中存储过程执行结果在数据窗口中显示

strollabout 2010-07-06 05:52:05
在pb界面通过条件执行存储过程,存储过程执行后的结果放到一个数据库临时表中,建立临时表的数据窗口来显示执行结果。

在pb界面中输入p_bworkdate,p_eworkdate,p_countLimit ,p_amtLimt 四个条件查询执行存储过程
pb中代码如下 :

t_stat_stdate='20100601'
t_stat_endate'20100601'
t_term_count=5
t_term_amt=100.00


declare lp_reprot_proc PROCEDURE FOR Person_Term_Stat_Date_dy(t_stat_stdate,t_stat_endate,t_term_count,t_term_amt);
Execute lp_reprot_proc;

为何执行后数据库Stat_Temp_Person没有更新呢?直接在oracle中执行就可以。是不是要建立存储过程数据窗口的,如果建立,输出要怎样呢?



oracle存储过程如下:
CREATE OR REPLACE PROCEDURE Person_Term_Stat_Date_dy(
p_bworkdate IN VARCHAR2, -- 开始日期
p_eworkdate IN VARCHAR2, -- 结束日期
p_countLimit IN NUMBER, --最小笔数.
p_amtLimt IN NUMBER, --最小金额.
p_errorcode OUT NUMBER, -- 错误代码
p_szerror OUT VARCHAR2) -- 错误信息
IS
ll_count NUMBER DEFAULT 0;
l_sum NUMBER DEFAULT 0; --统计金额.
l_count NUMBER DEFAULT 0; --统计笔数.
--l_operation VARCHAR2 DEFAULT 'ALL';

--l_file UTL_FILE.FILE_TYPE;
CURSOR c1(szPerson VARCHAR2) IS SELECT distinct Term_id,nvl(person_name,'') person_name from Term where Term_Status = '正常' and Person_Name = szPerson order by Term_id ;
CURSOR c2 IS SELECT DISTINCT nvl(PERSON_NAME,'') PERSON_NAME FROM PERSON_TEMP ;
BEGIN

p_errorcode := 0;
p_szerror := 'OK';
--l_operation := p_operation ;
FOR c12 in c2 LOOP

--DBMS_OUTPUT.put_line('姓名'||'-'||C12.person_name);
delete from Stat_Temp_Person where Person_Name = c12.PERSON_NAME;
commit;
FOR c11 IN c1(c12.PERSON_NAME) LOOP
BEGIN
select nvl(sum(Term_Count),0),nvl(sum(Term_amt),0.00) INTO l_count,l_sum
From Term_Stat_Date Where Stat_Date >=p_bworkdate and Stat_Date <=p_eworkdate and Term_id = c11.Term_id ;
IF l_count > p_countLimit OR l_sum > p_amtLimt THEN
Insert Into Stat_Temp_Person(Term_id,Term_Count,Term_amt,Person_Name) Values(c11.Term_id,l_count,l_sum,c12.PERSON_NAME) ;
--COMMIT;
END IF;
END ;
END LOOP;
END LOOP;
commit;
p_szerror :='finish';
--关闭文件
--p_szerror := 'utl_file.fclose';
--UTL_FILE.FCLOSE(l_file);
EXCEPTION
WHEN OTHERS THEN
p_errorcode := 1901;
--p_szerror := 'finish 处理完成';
END Person_Term_Stat_Date_dy;
...全文
166 点赞 收藏 3
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tyllen 2010-07-09
参数是 默认的,你只需在 dw.retrive()按照SP参数列表顺序填写参数即可。
回复
strollabout 2010-07-06
在建Stored Procedure 数据窗口的时候,输入参数怎么也成要输入的变量了啊,显示不出记录啊
回复
wag_enu 2010-07-06
PB 调存储过程生成DW 对象的方法是在建立DW对象向导中选择数据源的时候选择:Stored Procedure
再在存储过程列表中选择相应的存储过程即可。
回复
发动态
发帖子
数据库相关
创建于2007-09-28

732

社区成员

PowerBuilder 数据库相关
申请成为版主
社区公告
暂无公告