【发布时间】:2019-05-22 09:01:44
【问题描述】:
我有一个这样的查询:
select * from SOURCE
where A = 'a'
and B in (
select SOMECOLUMN from VERY_LONG_QUERY
WHERE SOMECHECK = 'some check'
)
我想将上面的查询转换成这样的语句 PL/SQL:
veryLongQueryVar := 'select SOMECOLUMN from VERY_LONG_QUERY WHERE SOMECHECK = ''some check'' '
select * from SOURCE
where A = 'a'
and B in veryLongQueryVar
这怎么可能?
【问题讨论】:
-
您希望这样做会怎样?
-
为什么需要这样做?如果需要动态生成部分查询,您正在查看动态 sql。一般来说,静态 sql 更好(更易于维护,更不容易发生 sql 注入等)
-
这听起来像动态 SQL,您可以使用
execute immediate。这听起来也不是一个好主意。您可能正在尝试解决错误的问题。 -
我的想法是拆分 2 个查询,以便其他开发人员更清晰易读。另外,我做了一个只有一个子查询的示例,但在我的实际案例中,我有 3 个嵌套查询。