解决方案可能取决于您需要使用参数的范围:
如果作用域只是一个 plpgsql 函数或过程,您可以简单地 DECLARE 您的参数,如 documentation 中所述。
如果范围是一个事务或会话,您可以在运行时更改和查询配置参数,如documentation 中所述,使用set_config 和current_setting 函数:
txt = set_config('myvar.startdate','2021-10-10', false) ;
txt = set_config('myvar.enddate','2021-10-10', false) ;
select *
from dbo.table
where date between current_setting('myvar.startdate') and current_setting('myvar.enddate')
如果范围是多会话,您可以在数据库级别定义配置参数,如documentation 中所述:
ALTER DATABASE database_name SET myvar.startdate = '2021-10-10' ;
ALTER DATABASE database_name SET myvar.enddate = '2021-10-10' ;
select *
from dbo.table
where date between current_setting('myvar.startdate') and current_setting('myvar.enddate')
您可能需要将配置参数转换为查询中日期列的类型,例如:
where date between CAST(current_setting('myvar.startdate') AS timestamp with time zone) and CAST(current_setting('myvar.enddate') AS timestamp with time zone)