pl/sql:使用具有不同值的查询命中变量(不同)分区

pl/sql:使用具有不同值的查询命中变量(不同)分区,sql,oracle,plsql,Sql,Oracle,Plsql,一个表包含2个分区 也就是x,y 我们必须使用非常量值的变量查询表,并且基于这些变量,必须从x或y分区获取数据 如果Var=1,我们必须点击x分区,如果Var=2,我们必须点击y分区 比如: begin var :=&var delete table partition(&var) where varaibles =some values end; 我遇到一个问题“非法使用分区” 我们可以通过替换值来动态地命中分区吗?如果要指定分区名称,需要使用动态SQL 但是,您

一个表包含2个分区 也就是x,y

我们必须使用非常量值的变量查询表,并且基于这些变量,必须从x或y分区获取数据

如果Var=1,我们必须点击x分区,如果Var=2,我们必须点击y分区

比如:

begin 
var :=&var

  delete  table partition(&var) where varaibles =some values

end;
我遇到一个问题“非法使用分区”


我们可以通过替换值来动态地命中分区吗?如果要指定分区名称,需要使用动态SQL


但是,您几乎不需要显式指定分区名称。假设您的
WHERE
子句在表分区的任何列上都包含一个谓词,Oracle将自动执行适当的分区修剪,这样它只需点击数据所在的一个或多个特定分区。

如果要指定分区名,您需要使用动态SQL


但是,您几乎不需要显式指定分区名称。假设您的
WHERE
子句在表分区的任何列上都包含一个谓词,Oracle将自动执行适当的分区修剪,这样它只需点击数据所在的一个或多个特定分区。

您想删除分区还是只从中选择?您想删除分区还是只从中选择?@user1403174-但是,正如我所说,在查询中显式指定要命中的分区的名称几乎是不必要/不合适的。在
WHERE
子句中指定一个谓词几乎总是更合适的,它允许Oracle确定哪个分区需要扫描。如果该表非常大…即使该表具有范围分区,并且我们正在使用分区列访问该表,我们是否可以访问分区values@user1403174-分区的全部意义在于它可以有效地访问一个非常大的表。您只需在表分区的任何列上指定一个谓词,Oracle就会确定需要命中哪个分区。@user1403174-但是,正如我所说,在查询中明确指定要命中的分区的名称几乎是不必要/不合适的。在
WHERE
子句中指定一个谓词几乎总是更合适的,它允许Oracle确定哪个分区需要扫描。如果该表非常大…即使该表具有范围分区,并且我们正在使用分区列访问该表,我们是否可以访问分区values@user1403174-分区的全部意义在于它可以有效地访问一个非常大的表。您只需在表分区的任何列上指定一个谓词,Oracle就会确定需要命中哪个分区。