Sql 带有输入参数的查询不会编译为视图

Sql 带有输入参数的查询不会编译为视图,sql,oracle,Sql,Oracle,因此,我试图创建一个视图,通过以varchar/string的形式指定一个特定的日期,允许用户从前端查询它。然后,视图/查询将返回指定日期当月的数据,以及在此之前13个月的数据。当我运行以下查询并输入有效的“string”/date时,我能够成功返回结果。但是,当我尝试使用相同的查询创建视图时,收到以下错误: SQL错误:ORA-01027:数据定义操作不允许绑定变量 以下是查询: SELECT person_name , person_age , person_dob FROM p

因此,我试图创建一个视图,通过以varchar/string的形式指定一个特定的日期,允许用户从前端查询它。然后,视图/查询将返回指定日期当月的数据,以及在此之前13个月的数据。当我运行以下查询并输入有效的“string”/date时,我能够成功返回结果。但是,当我尝试使用相同的查询创建视图时,收到以下错误: SQL错误:ORA-01027:数据定义操作不允许绑定变量

以下是查询:

SELECT person_name
   , person_age
   , person_dob
FROM person p
WHERE p.person_dob >= add_months(to_date(:par_date, 'yyyy-mm-dd'), -13);
以下是一些示例数据:

 Person_Name        Person_Age                Person_DOB
 Jon                18                        01-01-1990
 Jacob              21                        09-04-1994
 Heidi              28                        04-02-2010
 mark               30                        05-02-2011
 Helga              18                        03-02-2015
 Mike               18                        01-02-1992
 Larry              18                        01-04-1993
我想在指定后返回以下结果:par_date为'2020-03-02'

 Person_Name        Person_Age                Person_DOB
 Heidi              28                        04-02-2010
 mark               30                        05-02-2011
 Helga              18                        03-02-2015

不幸的是,你不能这样做。最接近的方法是创建一个表函数,但这比只从带有“WHERE”子句的表中进行选择效率要低得多

问汤姆有一个工作,但它是复杂的,更多的工作,并有可能非常不足。只需在视图或表上使用“WHERE”子句即可


这并不奇怪。视图不接受参数。