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