使用参数管理SQL脚本

时间:2015-09-23 13:23:31

标签: sql oracle git

我保留了许多与工作相关的SQL便捷脚本。 有一段时间我一直在使用会议 我可以激活where语句中的几个AND子句 通过提供一个或多个值来搜索。例如,

where color like '%&color' and size like '%&size'

当我在首选客户端(Golden6)中运行此类SQL时,会弹出 一个对话框,我可以在其中提供颜色,大小或两者的值。 非常方便,但LIKE'%string'经常 可怕的,经常导致全表扫描,或者我已经读过了。

是否有一些替代技术可用于编写和管理这些技术 脚本,保持只能填写的便利 我想要使​​用的参数,但避免围绕LIKE'%string&#39 ;?的性能问题我不想每次使用它时都要编辑脚本, 因为我把它们放在git中,而且我不想管理一堆本地修改过的文件,以便随时整理。

1 个答案:

答案 0 :(得分:1)

如果您想支持可选输入参数,那么您可以尝试

with data as 
(select '123' col1, 'ABC' col2 from dual union select '124', 'AB' from     dual)
select * from  data a where a.col1 = nvl('&col1', a.col1) and a.col2 = nvl('&col2', a.col2)

具有空值的附加数据行

with data as
 (select '123' col1, 'ABC' col2
from dual
  union
  select '124', 'AB'
    from dual
  union
  select '123', null from dual
  union
  select '124', null from dual)
select *
  from data
 where ('&col1' is null or '&col1' is not null and '&col1' = col1)
 and ('&col2' is null or '&col2' is not null and '&col2' = col2)