查询差旅费的,输入四个参数,输入一个结果集,用于我们的报表代码:
create or replace package P_Rpt_Rate_Evection is
type cur is ref cursor;
procedure Rpt_Rate_Evection
(
StartDate in date,---开始日期
EndDate in date,---结束日期
DepartMent in varchar2,--部门名称
HandleMan in varchar2---报销人 );
end P_Rpt_Rate_Evection;create or replace package body P_Rpt_Rate_Evection
is
procedure Rpt_Rate_Evection
(
StartDate in date,---开始日期
EndDate in date,---结束日期
DepartMent in varchar2,--部门名称
HandleMan in varchar2---报销人
)
is
-------------变量定义
mysql varchar2(30);
V_DEPARTMENT varchar(50); V_HANDLEMAN varchar(50); V_CARAMOUNT NUMBER; V_TRAINAMOUNT NUMBER; V_FLIGHTAMOUNT NUMBER;
V_MEETAMOUNT NUMBER;V_TAXIAMOUNT NUMBER;V_HOTELAMOUNT NUMBER; V_EDUCATEAMOUNT NUMBER;
V_SUBSIDYAMOUNT NUMBER; V_OTHERAMOUNT NUMBER;V_AMOUNT NUMBER ;
----------游标定义-------------
CURSOR cur is
(select D.NAME,DU.NAME, R.CARAMOUNT,R.TRAINAMOUNT,R.FLIGHTAMOUNT,R.MEETAMOUNT,R.TAXIAMOUNT, R.HOTELAMOUNT ,
R.EDUCATEAMOUNT,R.SUBSIDYAMOUNT, R.OTHERAMOUNT,R.AMOUNT
from rate_evection R ,d_organization D,d_user DU
where R.DEPARTMENT_XID=D.ID and R.HANDLEMAN_XID=DU.ID and D.NAME like DepartMent
and DU.NAME like HandleMan and to_char( R.CREATEDATE)<=to_char( EndDate) AND to_char( R.CREATEDATE)>=to_char(StartDate));
begin
-----创建临时表-------
mysql:='create GLOBAL TEMPORARY table temp ( DEPARTMENT varchar, HANDLEMAN varchar, CARAMOUNT NUMBER(15,2),
TRAINAMOUNT NUMBER(15,2), FLIGHTAMOUNT NUMBER(15,2), MEETAMOUNT NUMBER(10,2),TAXIAMOUNT NUMBER(15,2),
HOTELAMOUNT NUMBER(15,2), EDUCATEAMOUNT NUMBER(10,2), SUBSIDYAMOUNT NUMBER(10,2), OTHERAMOUNT NUMBER(10,2), AMOUNT NUMBER(15,2), )
on commit preserve rows ';
execute immediate mysql;
open cur;
loop
fetch cur into V_DEPARTMENT,V_HANDLEMAN,V_CARAMOUNT,V_TRAINAMOUNT, V_FLIGHTAMOUNT,V_MEETAMOUNT , V_TAXIAMOUNT,
V_HOTELAMOUNT, V_EDUCATEAMOUNT, V_SUBSIDYAMOUNT, V_OTHERAMOUNT, V_AMOUNT;
EXIT WHEN cur%NOTFOUND;
mysql:='INSERT INTO temp
values (V_DEPARTMENT,V_HANDLEMAN,V_CARAMOUNT,V_TRAINAMOUNT,V_FLIGHTAMOUNT,V_MEETAMOUNT ,V_TAXIAMOUNT,
V_HOTELAMOUNT,V_EDUCATEAMOUNT, V_SUBSIDYAMOUNT,V_OTHERAMOUNT,V_AMOUNT)';
execute immediate mysql;
end loop;
close cur;
commit;
mysql:=' select * from temp';
execute immediate mysql;
end;
end P_Rpt_Rate_Evection;
在CS客户端调用时报错ORA-06550: 第 1 行, 第 7 列:
PLS-00306: 调用 'RPT_RATE_EVECTION' 时参数个数或类型错误
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
我是ORACLE新手,上面的包是仿照写的,以前没写过?是不是有什么定义不对的地方?编绎正确
最多100分,都给了,希望大家帮忙
create or replace package P_Rpt_Rate_Evection is
type cur is ref cursor;
procedure Rpt_Rate_Evection
(
StartDate in date,---开始日期
EndDate in date,---结束日期
DepartMent in varchar2,--部门名称
HandleMan in varchar2---报销人 );
end P_Rpt_Rate_Evection;create or replace package body P_Rpt_Rate_Evection
is
procedure Rpt_Rate_Evection
(
StartDate in date,---开始日期
EndDate in date,---结束日期
DepartMent in varchar2,--部门名称
HandleMan in varchar2---报销人
)
is
-------------变量定义
mysql varchar2(30);
V_DEPARTMENT varchar(50); V_HANDLEMAN varchar(50); V_CARAMOUNT NUMBER; V_TRAINAMOUNT NUMBER; V_FLIGHTAMOUNT NUMBER;
V_MEETAMOUNT NUMBER;V_TAXIAMOUNT NUMBER;V_HOTELAMOUNT NUMBER; V_EDUCATEAMOUNT NUMBER;
V_SUBSIDYAMOUNT NUMBER; V_OTHERAMOUNT NUMBER;V_AMOUNT NUMBER ;
----------游标定义-------------
CURSOR cur is
(select D.NAME,DU.NAME, R.CARAMOUNT,R.TRAINAMOUNT,R.FLIGHTAMOUNT,R.MEETAMOUNT,R.TAXIAMOUNT, R.HOTELAMOUNT ,
R.EDUCATEAMOUNT,R.SUBSIDYAMOUNT, R.OTHERAMOUNT,R.AMOUNT
from rate_evection R ,d_organization D,d_user DU
where R.DEPARTMENT_XID=D.ID and R.HANDLEMAN_XID=DU.ID and D.NAME like DepartMent
and DU.NAME like HandleMan and to_char( R.CREATEDATE)<=to_char( EndDate) AND to_char( R.CREATEDATE)>=to_char(StartDate));
begin
-----创建临时表-------
mysql:='create GLOBAL TEMPORARY table temp ( DEPARTMENT varchar, HANDLEMAN varchar, CARAMOUNT NUMBER(15,2),
TRAINAMOUNT NUMBER(15,2), FLIGHTAMOUNT NUMBER(15,2), MEETAMOUNT NUMBER(10,2),TAXIAMOUNT NUMBER(15,2),
HOTELAMOUNT NUMBER(15,2), EDUCATEAMOUNT NUMBER(10,2), SUBSIDYAMOUNT NUMBER(10,2), OTHERAMOUNT NUMBER(10,2), AMOUNT NUMBER(15,2), )
on commit preserve rows ';
execute immediate mysql;
open cur;
loop
fetch cur into V_DEPARTMENT,V_HANDLEMAN,V_CARAMOUNT,V_TRAINAMOUNT, V_FLIGHTAMOUNT,V_MEETAMOUNT , V_TAXIAMOUNT,
V_HOTELAMOUNT, V_EDUCATEAMOUNT, V_SUBSIDYAMOUNT, V_OTHERAMOUNT, V_AMOUNT;
EXIT WHEN cur%NOTFOUND;
mysql:='INSERT INTO temp
values (V_DEPARTMENT,V_HANDLEMAN,V_CARAMOUNT,V_TRAINAMOUNT,V_FLIGHTAMOUNT,V_MEETAMOUNT ,V_TAXIAMOUNT,
V_HOTELAMOUNT,V_EDUCATEAMOUNT, V_SUBSIDYAMOUNT,V_OTHERAMOUNT,V_AMOUNT)';
execute immediate mysql;
end loop;
close cur;
commit;
mysql:=' select * from temp';
execute immediate mysql;
end;
end P_Rpt_Rate_Evection;
在CS客户端调用时报错ORA-06550: 第 1 行, 第 7 列:
PLS-00306: 调用 'RPT_RATE_EVECTION' 时参数个数或类型错误
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
我是ORACLE新手,上面的包是仿照写的,以前没写过?是不是有什么定义不对的地方?编绎正确
最多100分,都给了,希望大家帮忙
and D.NAME like DepartMent
and DU.NAME like HandleMan
用‘=’就行了吧?问题2
and to_char(R.CREATEDATE) <= to_char(EndDate)
AND to_char(R.CREATEDATE) >= to_char(StartDate));
最好指定日期格式问题3
commit;
mysql := ' select * from temp';
execute immediate mysql;
执行查询语句后啥也不干,废代码问题4
没有异常处理。
即使事务是由外层控制,也需要raise异常
太小了
岗位责任:
1、Senior Developer有3年以上的成功的软件产品或类似项目的开发经验。有较强的独立思考,判断和研发能力。能够比较准确的判断每个开发任务的工作量。对产品的质量和专业制造有比较成熟的经验和认识。
2.Senior Developer 的主要任务是在产品研发经理(Team Leader/Manager)带领下参与实现8a产品开发。必须有较高的技术水平和团队工作能力,并对8a及其相关的技术要有较高的兴趣和钻研能力。要有能够主动接受技术挑战,并能够将任务实现到底的精神和动力。
任职资格:
1.20岁以上,35岁以下,至少本科毕业,最好是国内1流大学理科的计算机专业。北京大学、清华大学、人民大学毕业生优先。
2.至少3年以上的软件公司的C/C++开发工作经验,用C/C++参与开发过成功的产品。
3.对 C/C++, Linux 系统必须有实际开发经验和高水平的掌握.
4.对参加过数据库开发的优先
5.对使用C/C++ 开发过系统内核(System Kernel), 网络通信 (Networking), 并行计算 (Parallel Computing), 分布式处理模式的优先 (Distributed Computing).
6.对Oracle ; Sybase IQ ; DB2等数据库有深入了解的优先
7.要求总结分析能力属于较高水平
8.英语必须有中等水平以上的读写能力,口语好的优先
9.要求开朗,积极,向上,能够承受一定的心理和工作压力
岗位地点:北京
月薪20K以内
Lade Chen
Bilast & Associates, Inc.
R 1501 Tower B Xintiandi Building No.1 Xibahe Road Chaoyang District Beijing PRC.
M:15011205431
P: 8610.5128.6869-828
Email: [email protected]
F: 8610.5128.6869 ext.888