暂无图片
存储过程中,如果where条件是动态增加的,如何实现
我来答
分享
豆豆
2021-06-01
存储过程中,如果where条件是动态增加的,如何实现

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

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
徐国奇

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


请输入正文
提交
相关推荐
Undo表空间不回收
回答 7
谢谢许超专家
Startup force到底是不是安全关闭
回答 4
已采纳
startupforce:做shutdownabort启动的时候需要做实例恢复,起不来要看具体问题,多数是数据文件坏了吧
求一份Oracle备份恢复的视频
回答 2
有本书叫《临危不惧oracle11g数据库恢复技术》看视频太慢,不如看书,然后自己做实验理解
oracle执行计划问题
回答 5
原SQL将righ join改成inner join是没问题的, 因为这个right join本身就是一个inner join的逻辑, 但是
oracle 一千到两千的数据量且更新频率很低,但是查询频率很高的表格有创建索引的必要吗?
回答 3
已采纳
看查询的字段和过滤条件,查询的字段是索引字段就更好了。必要性得看查询sql分类,才能正确评估。
资深DBA为什么要定制统计信息收集策略?
回答 3
已采纳
优化器在计算执行计划的成本时依赖于统计信息,如果没有收集统计信息,或者是统计信息过期了,那么优化器就会出现严重偏差,从而导致性能问题,因此要确保统计信息准确性。虽然数据库自带有JOB每天晚上会定时收集
有什么方式可以查询正在执行的ORACLE sql语句?
回答 2
根据SID,获取正在执行的sql,参考示例:DECLARECURSORcursql(ppresqladdrVARCHAR2)ISSELECTt.sqltextFROMv$sqltextwithnewl
Oracle 报表数据库用着卡主,大表加where条件出不来结果,但是有些其他表可以,这个数据库去别的数据库抄资料 job正常,备份归档也正常,看alert日志没大问题,如何解决?
回答 1
索引,
Oracle rac 磁盘组名称冲突怎么解决?
回答 1
1、多半之前安装过RAC或者使用过ASM磁盘组,ASM磁盘上的元数据还存在;2、检查下ASM磁盘对应的磁盘路径,【确保磁盘上没有数据,或磁盘上的数据可以清理】如:假设ASM磁盘对应的路径为:/dev/
请教各位大神,java项目中查询oracle数据库中的动态执行表卡住!!我想问一下为什么这样子?
回答 2
应该还是权限的问题,你具体执行什么语句报的错,授权语句又是什么