我经常每天使用一个查询。我通常在一天中使用where子句中的不同条件多次运行同一个查询。
鉴于下表:
columnA columnB columnC columnD
1 2 3 4
5 6 7 8
9 9 9 9
当我运行查询时,我通常会修改where子句以根据特定列获取结果。有时我会说'where columnA=1'
或我会将其更改为where columnB=3'
。
为了避免每次都重新键入查询,我决定在SQL plus脚本中编写脚本。
要运行脚本,我想按如下方式运行它:
> @myScript columnA 3
or
> @myScript columnC 7
这是我到目前为止所拥有的:
define searchColumn=&&1
define searchParam=&&2
Select columnA, columnB, columnC,columnD
from myTable t
where t.'&searchColumn' in ('&searchParam')
由于抱怨t.'&searchColumn'
,上述内容尚未奏效。如何在包含前缀的where子句中构建表名。
此外,如果您有类似的经历,每天都有一组常见的查询,我很想知道您如何使用它们来让您的生活更轻松。如果有更好的解决方案,请告诉我。
由于
答案 0 :(得分:1)
尝试:
Select columnA, columnB, columnC, columnD
from myTable t
where t.&searchColumn in ('&searchParam')
此外,如果他们要输入替换值,您不需要提前定义它们。
我会将“IN”更改为“=”
或者,如果他们需要输入多个值来搜索:
Select columnA, columnB, columnC,columnD
from myTable t
where t.&searchColumn in (&searchParam)
但他们必须有正确的输入,例如:
'字符串', '字符串1'
2010,2011
如果您希望他们能够使用DEFINE将替换值键入文件(在顶部),那么您可以这样做:
define searchColumn = column_name_here
define searchParam = search_term_here
Select columnA, columnB, columnC,columnD
from myTable t
where t.&searchColumn in ('&searchParam')
同样,您可能希望将IN更改为=
另一方面,如果未定义替代变量,将提示用户输入该变量。因此,这取决于您是否希望每次运行时都提示它们输入,或者您希望它们能够在运行之前在脚本顶部定义变量。