Postgresql 解析PgAttribute和Where条件子句 我想做的是:

Postgresql 解析PgAttribute和Where条件子句 我想做的是:,postgresql,Postgresql,模块化函数查询我指定的任何表的时间范围(pg_属性作为字符串输入) 在调用::regclass之后,在where子句中将多个条件链接为函数输入 在链接的where子句中引用attrelid=\u tablename::regclass CREATE OR REPLACE FUNCTION the_func( rngstart timestamptz, rngdend timestamptz, _tablename VARCHAR(16), _id INT ) AS $$

模块化函数查询我指定的任何表的时间范围(pg_属性作为字符串输入)

  • 在调用::regclass之后,在where子句中将多个条件链接为函数输入

  • 在链接的where子句中引用attrelid=\u tablename::regclass

    CREATE OR REPLACE FUNCTION the_func(
       rngstart timestamptz,
       rngdend timestamptz,
       _tablename VARCHAR(16),
       _id INT
    ) AS $$
       SELECT *
       FROM pg_attribute
       WHERE attrelid = _tablename::regclass
          AND id = _id
          AND time > rngstart
        AND time <= rngend
    $$ LANGUAGE sql STABLE;
    
    创建或替换函数\u func(
    rngstart-TZ,
    rngdend时间戳,
    _表名VARCHAR(16),
    _id INT
    )作为$$
    挑选*
    从pg_属性
    其中attrelid=\u tablename::regclass
    和id=\u id
    和时间>rngstart
    
    时间您必须编写PL/pgSQL函数并使用动态SQL,这与

    BEGIN
       RETURN QUERY EXECUTE format(
             'SELECT ... FROM %I '
             'WHERE id = $1 '
             'AND time > $2 AND time <= $3',
             _tablename::text)
       USING _id, rngstart, rngend;
    END;
    
    开始
    返回查询执行格式(
    '从%I中选择…'
    '其中id=$1'
    
    '和时间>$2和时间您是否已经知道表及其列的名称?理想情况下,这可以用于多个表,但每个表都有相同的列名