如果我这帖子发错地方了,本应归属“基础和管理”的,还望见谅!
在存储过程中,我定义了一个变量,而它的值满足两条件:1、处于一日期段内;2、它的day=15;
(declare last_balance_date date;
条件一: ADD_MONTH(begin_date,-1)<= last_balance_date < begin_date;
条件二: EXTRACT(day from last_balance_date) = '15';
)
我想是否能通过定义函数或者集合来实现,再到存储过程中调用一把。
可怜在下懂得实在太少,而事又急,只能上来求助各位看官了,先谢谢了!
在存储过程中,我定义了一个变量,而它的值满足两条件:1、处于一日期段内;2、它的day=15;
(declare last_balance_date date;
条件一: ADD_MONTH(begin_date,-1)<= last_balance_date < begin_date;
条件二: EXTRACT(day from last_balance_date) = '15';
)
我想是否能通过定义函数或者集合来实现,再到存储过程中调用一把。
可怜在下懂得实在太少,而事又急,只能上来求助各位看官了,先谢谢了!
解决方案 »
- 紧急求救,ORA-01157: cannot identify/lock data file 7 - see DBWR trace file
- pl/sql where后面的语句不太明白
- imp导入后shrink压缩段的问题
- 请高手入内,何为空间索引?
- oracle条件部分用字段的部分内容进行比较问题!
- oracle字段默认值问题,在线等!
- 安装oracle第三张盘的时候,出现OracleOra90Agent出错,错误是259:没有可用的数据,请教?
- sql/plus语句问题求教
- pb连接ORACLE9i所须的动态库及配置文件有那些?分不够再加!
- sql去重的问题
- oracle在存储过程中,如何删除和创建表?
- 我装的是oracle9i,是否要装oracle developer9i?如果是的,希望哪位达人可以提供下地址下载,谢谢
pbegin_date in out date
)
is
vday number;
begin
select EXTRACT(day from pbegin_date) into vday from dual;
if vday>15 then
pbegin_date:=to_date(to_char(pbegin_date,'yyyymm') || '15');
else
pbegin_date:=to_date(to_char(ADD_MONTHS(pbegin_date,-1),'yyyymm') || '15');
end if;
end P_last_balance_date;
这个日期变量last_balance_date的值是begin_date所在月或上个月的“15”号?
trunc(last_balance_date ,'dd')
in
(trunc(begin_date)+15,add_months(trunc(begin_date),-1)+15)
to waterfirer(水清):
begin_date 是我存储过程的一个参数,而并不存在于具体一个表中;同时,在这个存储过程中,我同时要用到这个begin_date和last_balance_date。有什么我没理解进去的,还请见谅。
to njhart2003():
嘿嘿,容我再问个BC吧,那我还如何得到这个last_balance_date,或者说我该如何给它赋值呢?具体语句(格式)是? 如果这里的‘15’换成字段‘FCD_DAY’应该也可以吧,我这里的‘FCD_DAY’还得根据条件从表中选出来呢,挺罗嗦的!
我写的那个就是你把存储过程中的begin_date作为参数调用我那个存储过程,返回值就是你要的last_balance_date,然后继续你的存储过程。如果15不是固定的,那就把P_LAST_BALANCE_DATE改一改,加一个参数就行了。其实那一段可以放到你自己的存储过程中的。
SQL> select trunc(sysdate,'dd') begin_date,trunc(sysdate-14,'mm')+14 last_balance_date from dual;BEGIN_DATE LAST_BALANCE_DATE
----------- -----------------
2005-8-24 2005-8-15Executed in 0.016 secondsSQL> select trunc(sysdate-10,'dd') begin_date,trunc(sysdate-10-14,'mm')+14 last_balance_date from dual;BEGIN_DATE LAST_BALANCE_DATE
----------- -----------------
2005-8-14 2005-7-15Executed in 0.016 secondsSQL>