function - 将 SQL 查询转换为采用标识符的函数

标签 function postgresql postgresql-9.1 dynamic-sql

我在 PostgreSQL 中有一个 SQL 查询,用于从日期中提取 doy(一年中的某一天)。我的查询是:

select extract(doy from date_col) as n
from mytable
order by n

我想把它变成一个像 extract_doy(tablename, date_column_name) 这样的函数。
我该怎么做?

最佳答案

假设您想返回一组 double ,类似这样的操作应该有效:

CREATE OR REPLACE FUNCTION tmp_extract_doy(table_name text, column_name text) 
RETURNS SETOF DOUBLE PRECISION
AS
$BODY$
DECLARE
BEGIN
    RETURN QUERY EXECUTE format('SELECT EXTRACT(doy from %I) AS n FROM %I ORDER BY n', column_name, table_name);
END
$BODY$
  LANGUAGE plpgsql
  COST 100;

关于function - 将 SQL 查询转换为采用标识符的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14730935/

相关文章:

c - 数组向左旋转(递归)

arrays - PostgreSQL jsonb) - 将字符串转换为数组并更新字段

php - 如何将自定义类型数组传递给 Postgres 函数

coldFusion 中的 postgresql UUID 等价物

ios - 我是否需要在同一类中首次使用该方法之前声明该方法?

python - 函数不打印所有偶数?

javascript - 如何调用 Javascript 函数表达式

sql - 改进 rails 中的调度/预订 sql 查询

mysql - SQL 查询是否受所用 DBMS 的限制?

postgresql - 函数makepoint postgresql 9.1错误postgis