我有大约5个长SQL查询,并希望用变量替换一些值,所以我可以直接在顶部的脚本中输入它们(没有弹出窗口)。
实现这一目标的最佳方法是什么(现在是使这个问题不重复的部分),这样我也可以拥有列表变量。例如,以下是配置1和2之间的查询应该如何不同:
WHERE TRD_SRC_SYS ='blabla1'
WHERE TRD_SRC_SYS ='blabla223'
Select 'blabla1- NEW' as REC_SYSTEM,
Select 'blabla223- NEW' as REC_SYSTEM,
WHERE TRD_SRC_SYS in ('MAG','LLELLE')
WHERE TRD_SRC_SYS ='MA'
独立于此我还想在一个地方设置日期,所以我不必在查询中出现的任何地方更改它。 (但我相信这在其他帖子中有解释)
任何建议都表示赞赏。
答案 0 :(得分:1)
您可以使用替换变量,如:
Client Total Billable
------------------------- ---------------------------------------
Whale Mart 19868.75
Flitter 11271
Acme Corp. 9067.375
Flitter 8625
Astro Electric. 5500
Acme Corp. 4000
Lighting Unlimited 3675
Whale Mart 3200
ABM Systems 3106.75
Whale Mart 2900
ABC Logistics 2600
Acme Corp. 2475
Astro Electric 2312
Flitter 1845
ABM Systems 1005
ABC Logistics 900
Speedy Messengers 375
ABC Logistics 345
Durham Tiles 300
ABM Systems 160
20 rows selected
然后编写如下的查询:
define sys_list = "'MAG','LLELLE'"
它将解决:
... where TRD_SRC_SYS in (&sys_list.)
当你只需要一个值时:
... where TRD_SRC_SYS in ('MAG','LLELLE')
...查询将解析为
define sys_list = "'MA'"
表示与
相同... where TRD_SYS in ('MA')
... where TRD_SYS = 'MA'
创建一个名为script.sql的脚本,其内容为:
SQL> select * from t1;
TRD_SRC_SYS
------------------------------
MA
MAG
LLELLE
使用不同的参数运行脚本:
select * from t1
where TRD_SRC_SYS in (&1.);