暂无图片
存储过程中,如果where条件是动态增加的,如何实现
我来答
分享
上善若水
2021-05-24
存储过程中,如果where条件是动态增加的,如何实现

写oracle存储过程,如果where state in(‘2021-01,31’,’2021-02-28’,’2021-03-31’)条件里面的日期是根据当前月份来决定的,比如当前是2021-04-30,那条件就加到2021-04-31,这样如何实现呢

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
不想用随机名字
可以写一个自定义函数实现
暂无图片 评论
暂无图片 有用 0
打赏 0
徐国奇
set serveroutput on;
declare
mon varchar2(4);
v_sql varchar2(20);
v_1 varchar2(200);
v_sql_2 varchar2(1000);
begin 
     select extract(month from sysdate) into mon from dual;
     for i in 0..mon-1 loop
     select ''''||to_char(last_day(add_months(sysdate,-i)),'yyyy-mm-dd')||'''' into v_sql from dual;
     v_1:=v_1||','||v_sql;
     end loop;
     v_sql_2:='select * from test where v_1 in ('||substr(v_1,2)||')';
     dbms_output.put_line(v_sql_2);
end;
/

复制
暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
归档过大
回答 4
先看看awr吧
缺少oci.dll文件
回答 4
oci版本不对
oracle update报错-1407
回答 1
1、因为pmdsuc008字段设置有notnull约束;2、所以不能写入NULL值;3、可以改为:pmdsuc008nvl(null,’');
Oracle19c select 表报错ORA-14137: Table in partially dropped state, submit DROP TABLE PURGE
回答 3
19.17.0.0
Oracle10gR2 expdp报错ORA-39014,ORA-39029,ORA-31672
回答 3
用system和sys用户都是同样的错误,日志如下:Export:Release10.2.0.4.064bitProductiononFriday,06December,201913:47:41Cop
安装完华为的ensp然后还有OracleVm和Windows系统不兼容
回答 1
换以前的老版本试试能不能解决呢?
各位大佬请问gc 有什么好的解决办法?
回答 1
业务做节点隔离,对象节点隔离。
RAC能否实现数据库服务器读写的负载均衡?
回答 2
已采纳
OracleRAC提供两种方式实现负载均衡:第一种是纯技术手段,即在用户连接时,根据系统当前的负载情况决定由哪个节点处理用户请求;第二种是面向业务,人为的把应用切分成很多service,通过某个ser
Oracle存储层次体系是怎样的?
回答 1
已采纳
Oracle数据库由一个或多个表空间构成。表空间(tablespace)是Oracle中的一个逻辑存储容器,位于存储层次体系的顶层,包括一个或多个数据文件。存储层次体系如下:(1)数据库由一个或多个表
OGG-01154 ORA-01555: snapshot too old
回答 1
在该进程的参数里,加入这句:GROUPTRANSOPS10  再启动该进程试试。